2014-12-12 14 views
29

में सूत्रण asyncio बनाम बनाम मैंने पाया कि अजगर 3.4 में वहाँ बहु/सूत्रण के लिए कुछ अलग पुस्तकालयों हैं: multiprocessing बनाम threading बनाम asyncioबहु अजगर 3.4

लेकिन मुझे नहीं पता कि कौन सा उपयोग करना है या "अनुशंसित" है। क्या वे वही काम करते हैं, या अलग हैं? यदि हां, तो किसके लिए उपयोग किया जाता है? मैं एक प्रोग्राम लिखना चाहता हूं जो मेरे कंप्यूटर में मल्टीकोर का उपयोग करता है। लेकिन मुझे नहीं पता कि मुझे कौन सी लाइब्रेरी सीखनी चाहिए।

उत्तर

28

वे (थोड़ा) विभिन्न उद्देश्यों और/या आवश्यकताओं के लिए लक्षित हैं। सीपीथॉन (एक ठेठ, मुख्य रेखा पायथन कार्यान्वयन) में अभी भी global interpreter lock है, इसलिए बहु-थ्रेडेड एप्लिकेशन (आजकल समानांतर प्रसंस्करण को लागू करने का एक मानक तरीका) उप-स्थानिक है। यही कारण है कि multiprocessingthreading से अधिक पसंद किया जा सकता है। लेकिन हर समस्या को प्रभावी रूप से [लगभग स्वतंत्र] टुकड़ों में विभाजित नहीं किया जा सकता है, इसलिए भारी इंटरप्रोसेस संचार की आवश्यकता हो सकती है। यही कारण है कि multiprocessing सामान्य रूप से threading से अधिक पसंद नहीं किया जा सकता है।

asyncio (इस तकनीक उपलब्ध है न केवल पायथन में, अन्य भाषाओं और/या चौखटे भी पास है, जैसे Boost.ASIO) एक विधि प्रभावी ढंग से कई एक साथ स्रोतों से आई/ओ के संचालन का एक बहुत संभाल करने के लिए है w/ओ की जरूरत समांतर कोड निष्पादन। तो यह एक विशेष कार्य के लिए सिर्फ एक समाधान (वास्तव में एक अच्छा है!), सामान्य रूप से समांतर प्रसंस्करण के लिए नहीं।

+3

यह नोट करते हुए कि सभी तीन समांतरता प्राप्त नहीं कर सकते हैं, वे सभी समवर्ती (गैर-अवरुद्ध) कार्य करने में सक्षम हैं। – sargas

संबंधित मुद्दे