2012-05-13 14 views
16

मैंने कुछ महीने पहले पायथन का अध्ययन करना शुरू किया, फिर मुझे ज्योथन मिला।jython multithreading

क्या थ्रेड्स ज्योथन में ठीक से काम करते हैं, क्योंकि यह doesn't have a GIL है? यदि हां, तो क्या आप समवर्ती (थ्रेडिंग) पर एक अच्छी किताब का सुझाव दे सकते हैं?

+3

यह एक अच्छा सवाल है, मैं ईमानदारी से जवाब नहीं जानता लेकिन मैंने दोनों के साथ बहुप्रचार किया है, इसलिए शायद एक बेहतर सवाल यह है: 'क्या मुझे पाइथन मल्टीप्रोसेसिंग या जावा के थ्रेडिंग का उपयोग करने की आवश्यकता है?' मुझे यकीन है कि यह सुनिश्चित करता है कि ज्योथन दोनों का मिश्रण है, इसलिए आपको यह सुनिश्चित नहीं है कि आपको किसके लिए उपयोग करना है। – Lostsoul

+0

क्या आपका मतलब है जैप्टन, या ज्योथन? यह ओपन-एंडेड प्रश्न का प्रकार है जो एसओ, बीटीडब्ल्यू के लिए वास्तव में एक अच्छा फिट नहीं है। –

+0

[इस सवाल के अनुसार (http://stackoverflow.com/questions/4227269/hidden-multithreading-bottlenecks-in-jython), जवाब हाँ है। मैं समझता हूं कि अजगर के माध्यम से पाइथन मल्टीथ्रेडिंग लाइब्रेरी या जावा समवर्ती समर्थन तक पहुंच बनाना संभव है। –

उत्तर

5

मल्टीथ्रेडिंग पर मुझे मिली सबसे अच्छी पुस्तक "अभ्यास में जावा कंसुरेंसी" है। यह जावा थ्रेड समेकन पर बहुत अधिक ध्यान केंद्रित कर रहा है, और जब आप समेकन द्वारा पेश की गई समस्याओं और संभावनाओं को समझना शुरू करते हैं तो दोनों नम्र और रोमांचक होते हैं। कुछ साल पहले खरीदी गई प्रतिलिपि में कोडिंग में कुछ इरेटा था, हालांकि, जो पहले से ही मस्तिष्क-चुनौतीपूर्ण विषय को बढ़ाता है: यहां इरेटा देखें: http://jcip.net/errata.html

हालांकि जावा डेवलपर्स के लिए डिज़ाइन किया गया है जो कि समेकन में शामिल होने की इच्छा रखते हैं (जिस तरह से किसी भी व्यक्ति ने कभी भी किसी भी प्रकार का जीयूआई इंटरफ़ेस इस्तेमाल किया है), मुझे यकीन है कि पुस्तक में उल्लिखित तकनीकी कठिनाइयों और सूक्ष्मताएं किसी भी कार्यान्वयन पर लागू होती हैं संगामिति।

वैसे, मुझे ज्योथन भी पसंद है और यह पुष्टि कर सकता है कि जावा में आप जो कुछ भी कर सकते हैं, वह आप ज्योथन में कर सकते हैं। हालांकि, एक चेतावनी है: समरूपता एसिंक्रोनस प्रोग्रामिंग (जीयूआई सहित) और/या प्रदर्शन के लिए हो सकती है। यदि उत्तरार्द्ध के लिए आपको कोई समस्या है, तो मेरी राय में: मेरे अनुभव में ज्योथन बराबर जावा प्रोग्राम की तुलना में लगभग 10 x धीमी गति से चलता है।

इसका क्या अर्थ है कि आपके अधिक मांग वाले ज्योथन मॉड्यूल को संख्या-क्रंचिंग कार्यों के लिए ज्योथन के अलावा कुछ और कॉल करना होगा। साथ ही, ज्योथन अब तक * पाइथन के मल्टीप्रोसेसिंग मॉड्यूल नहीं है, इसलिए इंटर-प्रोसेस संचार बाहर हैं, जब तक आप आरएमआई के डरावने क्षेत्र में प्रवेश नहीं करते। यदि आप वह विकल्प लेते हैं तो आप मुझसे अधिक पुरुष/महिला हैं। लेकिन सबकुछ ठीक है: कृपया http://www.jython.org पर "जेफॉन के लिए परिभाषित मार्गदर्शिका" देखें ... अध्याय 1 एक प्रकार का सीटी-स्टॉप परिचय है, और अध्याय 10 जावा और ज्योथन को एकीकृत करने के बारे में है (संकेत: यह बेहद आसान है)।

  • दिलचस्प: ज्योथन साइट पर एक त्वरित झलक दिखाती है कि, सिर्फ 10 दिन पहले, 17/05/12, संस्करण 2.7 ए 1 जारी किया गया था ... एक "अल्फा" रिलीज। इसमें मल्टीप्रोसेसिंग मॉड्यूल होना चाहिए, जो पायथन 2.6 के साथ आया था। डब्ल्यूडी इसे जांचने के लिए दिलचस्प हो: यदि ऐसा है तो संभवतः यह आपको ज्योथन और सीपीथन प्रक्रियाओं को जोड़ने का रोमांचक विकल्प प्रदान करता है (बाद में अपडेट करें: दुख की बात यह है कि इस पल के लिए ऐसा लगता है कि ऐसा नहीं है - मॉड्यूल नाम "मल्टीप्रोसेसिंग" को पहचानने पर पहचाना नहीं गया था) ...

पुनश्च एक अंतिम शब्द: सबसे विशेषज्ञ हैं, जो इन चीजों के बारे में ज्यादा से ज्यादा मैं कहता हूं कि मूर के कानून Amdahl का कानून है, जो संक्षेप में इसका मतलब द्वारा importtance में अधिक्रमित किया जा रहा है पता है कि प्रोग्रामिंग स्थिर का चुनौतीपूर्ण चुनौती और स्केलेबल सच समवर्ती कार्यक्रम भविष्य में अपरिहार्य होंगे। वास्तव में कितना आसान सच (यानी धागा) चालाक कोड विश्लेषण उपकरण के उपयोग के साथ समेकन किया जा सकता है, मैं नहीं कह सकता लेकिन इस विषय में निवेश और समेकन द्वारा लगाए गए तर्क के आकर्षक, बौद्धिक नए विषयों शायद भुगतान करेंगे ... यदि आपको एक चुनौती पसंद है।

3

हां, ज्योथन के साथ आपके पास real multi-threading है। ज्योथन (जेपीथन उत्तराधिकारी) पाइथन का कार्यान्वयन है जो जेवीएम में चलता है। ज्योथन और मूल परियोजना के बीच मुख्य मतभेदों में से एक यह है कि पहले जीआईएल नहीं है और जेवीएम के कार्यान्वयन के आधार पर वास्तविक बहु-थ्रेडिंग समर्थन लागू करता है।

मैं आपको इस book और OReilly's पर एक नज़र डालने का सुझाव दूंगा।

0

प्रारंभ में भ्रमित पहलू यह हो सकता है कि you can mix and match जावा और जेथन की समवर्ती तंत्र। लेकिन यह सब काम करने लगता है।कारण हैं:

  • जेथॉन के नीचे एक ही पुराना जावा है। भारी ज्योति मशीनरी के तहत भी इसके सभी मजबूत थ्रेडिंग तंत्र और डेटा संरचनाएं तोड़ने वाली नहीं हैं।
  • ज्योथन के थ्रेड जावा थ्रेड को उनके चेसिस के रूप में लेते हैं और उन्हें पाइथन थ्रेडिंग एपीआई बोलने के लिए कुछ अधिरचना जोड़ें। (पोर्टिंग थ्रेडेड पायथन कोड को आसान बनाने का कोई बेहतर तरीका नहीं है।) लेकिन दो प्रकार के धागे का सार समान है। सिवाय इसके कि ज्योथन धागे

    ... कोई प्राथमिकता नहीं है, कोई धागा समूह नहीं है, और धागे को नष्ट नहीं किया जा सकता है, रोका, निलंबित, फिर से शुरू किया जा सकता है, या बाधित नहीं किया जा सकता है। [1]

अजगर मुहावरों, शायद थोड़ा और अधिक सुविधाजनक हैं, क्योंकि उदाहरण के लिए, यदि आप synchronized (some_object) { ... } के बराबर करना चाहते हैं, वहाँ है a small bit of fiddling required है, जो एक RLock का उपयोग कर की तुलना में कम पठनीय होने की संभावना है ।

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