2012-07-10 20 views
13

मैंने एक स्क्रिप्ट लिखी है जो एक एपीआई से डेटा खींचने के लिए प्रत्येक दस धागे के दो थ्रेड पूल का उपयोग करती है। थ्रेड पूल this code on ActiveState लागू करता है। प्रत्येक थ्रेड पूल नई प्रविष्टियों के लिए PubSub के माध्यम से रेडिस डेटाबेस की निगरानी कर रहा है। जब कोई नई प्रविष्टि प्रकाशित होती है, तो पाइथन डेटा को उस फ़ंक्शन पर पास करता है जो एपीआई को कॉल करने के वास्तविक काम को करने के लिए PHP खोल निष्पादित करने के लिए पायथन के Subprocess.POpen का उपयोग करता है।पायथन धागे की शेड्यूलिंग प्राथमिकता को नियंत्रित करना?

PHP शैल लॉन्च करने की यह प्रणाली मेरे PHP वेब ऐप के साथ कार्यक्षमता के लिए आवश्यक है, इसलिए पायथन के साथ PHP शैल लॉन्च नहीं किया जा सकता है।

यह स्क्रिप्ट केवल लिनक्स सर्वर पर चल रही होगी।

मैं एप्लिकेशन के धागे के niceness (शेड्यूलिंग प्राथमिकता) को कैसे नियंत्रित करूं?

संपादित करें:

यह अजगर में अलग-अलग धागे के लिए शेड्यूलिंग प्राथमिकता को नियंत्रित करने लगता है संभव नहीं है। क्या कोई पाइथन समाधान है, या कम से कम एक यूनिक्स कमांड मैं अपनी स्क्रिप्ट के साथ प्राथमिकता को नियंत्रित करने के लिए चला सकता हूं?

संपादित करें 2:

खैर मैं एक अजगर जिस तरह से यह संभाल करने के लिए खोजने खत्म नहीं हुई। कैसे वे एक वैश्विक दुभाषिया ताला (जीआईएल) का उपयोग करके लागू की वजह से

nice -n 19 python MyScript.py 

उत्तर

11

मुझे विश्वास है कि सूत्रण प्राथमिकता अजगर में चलाया नहीं है: मैं सिर्फ अपनी स्क्रिप्ट अच्छा के साथ अब इस तरह चल रहा हूँ। ऐसा कहकर, अगर आप एक थ्रेड को अधिक सीपीयू प्रोसेसिंग प्राथमिकता दे सकते हैं, तो जीआईएल के आसपास हाथों के पाइथन कार्यान्वयन को इसके बारे में पता नहीं होगा क्योंकि यह जीआईएल के आसपास सौंपी गई है। यदि आप अपने पूल में एक ही धागे में अच्छीता बढ़ाने में सक्षम थे (कहें कि यह एक और महत्वपूर्ण काम कर रहा है) तो आपको जीआईएल को अधिक प्राथमिकता धागा पहुंच प्रदान करने के लिए ताले के अपने कार्यान्वयन का उपयोग करना होगा।

एक गूगल खोज इस लेख जो मेरा मानना ​​है कि के समान है कि तुम क्या कह रहे हैं

बताता है कि क्यों यह काम does not http://www.velocityreviews.com/forums/t329441-threading-priority.html

वैकल्पिक हल मैं http://bytes.com/topic/python/answers/645966-setting-thread-priorities

+0

उत्तर के लिए धन्यवाद! मैंने सवाल अब दोबारा जवाब दिया है कि मैं व्यक्तिगत रूप से आवेदन के लिए अनुसूची प्राथमिकता कैसे निर्धारित कर सकता हूं। यह अभी भी मेरी जरूरतों को पूरा करना चाहिए। मैंने आपकी प्रतिक्रिया को बढ़ा दिया है और यदि आपको कोई अन्य प्रतिक्रिया नहीं मिलती है तो आपको सबसे अच्छा जवाब मिल जाएगा। – Backus

1

सुझाव दे रहा था मैं सोच रहा था की व्याख्या करता है देता है यदि this answer at another related question इस परिदृश्य में उपयोगी हो सकता है? (link)

आप पहले से ही अपने PHP स्क्रिप्ट शुरू करने के लिए Subprocess.POpen उपयोग कर रहे हैं के रूप में, यह मेरे हमलों है कि आप "preexec_fn" और या तो एक पूर्वनिर्धारित समारोह, या एक लैम्ब्डा समारोह (ऊपर लिंक जवाब में प्रदर्शन के रूप में) उपयोग कर सकते हैं प्रत्येक लॉन्च PHP थ्रेड का अच्छा स्तर सेट करने के लिए?

2

मुझे पता है, बहुत समय बीत चुका है, लेकिन मैं हाल ही में इस प्रश्न में आया, और मैंने सोचा कि यह एक और विकल्प जोड़ने के लिए उपयोगी होगा।

threading2 पर एक नज़र है, जो है एक ड्रॉप-में प्रतिस्थापन और विस्तार डिफ़ॉल्ट मॉड्यूल सूत्रण समर्थन के साथ, के लिए - तरह की - के लिए प्राथमिकता और आत्मीयता।

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

  • कोई संबंधित समस्या नहीं^_^