2014-04-24 10 views
6

मेरे पास एक सर्वर जैसा पाइथन प्रोग्राम है जो पैकेट प्राप्त करता है, और उन्हें पैकेट के प्रकार के अनुसार संसाधित करता है। ऐसा करने के लिए, मैंने multiprocessing मॉड्यूल का उपयोग करके कई प्रक्रियाएं उत्पन्न की हैं। मैंने देखा है कि कचरा संग्रह ऑपरेशन के दौरान कुछ देरी का कारण बनता है और वांछित समय सीमा के भीतर पैकेट संसाधित नहीं होते हैं। मैं जानता हूँ कि कचरा संग्रहण अक्षम करने के तरीके:कचरा संग्रह कई चल रही प्रक्रियाओं/धागे के साथ कैसे काम करता है?

import gc 
gc.disable() 

हालांकि मेरे सवाल का कैसे वास्तव में अजगर का क्या करता है कचरा संग्रहण जब वहाँ कई प्रक्रियाओं या धागे हैं शामिल है? प्रक्रियाओं या धागे के कचरा संग्रह के बीच मतभेद हैं? क्या मुझे प्रत्येक प्रक्रिया/धागे के लिए कचरा संग्रह बदलने की ज़रूरत है? या माता-पिता प्रक्रिया/धागे में कचरा संग्रह में एकल परिवर्तन सभी बाल प्रक्रियाओं/धागे के लिए हैंडलिंग का ख्याल रखता है?

मेरे वर्तमान स्थिति अजगर 2.7 का उपयोग करता है लेकिन मुझे पता है कि रुचि होगी अगर यह एक प्रक्रिया में कई सूत्र हो सकता है दोनों अजगर 2 और अजगर 3.

उत्तर

3

के लिए ही है। कचरा संग्रह एक प्रक्रिया के भीतर काम करता है।

फोर्क का समर्थन करने वाले सिस्टम पर: यदि आप एक प्रक्रिया में कचरा संग्रहण अक्षम करते हैं और फिर इसे फोर्क करते हैं (= प्रक्रिया की एक प्रति बनाते हैं) तो प्रतिलिपि में भी जीसी को अक्षम किया जाना चाहिए।

यदि नई प्रक्रियाएं बनाई गई हैं जो प्रतिलिपि नहीं हैं तो उनके पास अपना स्वयं का कचरा संग्रह कॉन्फ़िगरेशन है। डिफॉट द्वारा उनके जीसी चालू होना चाहिए।

लेकिन वहां कई पुस्तकालय हैं जिनमें Process कक्षा है। मैं नहीं बता सकता कि वे क्या करते हैं। यदि आप एक नई प्रक्रिया (प्रतिलिपि नहीं) के लिए os का उपयोग करते हैं तो इसे जीसी चालू करने के साथ चलाना चाहिए।

एक प्रक्रिया के जीसी की कॉन्फ़िगरेशन का किसी अन्य के जीसी की कॉन्फ़िगरेशन पर कोई प्रभाव नहीं पड़ता है। एक दूसरे से कोड की रक्षा के लिए प्रक्रियाएं सीमाएं हैं। तो एक प्रक्रिया में कुछ भी आसानी से किसी अन्य प्रक्रिया में पहुंचने में सक्षम नहीं है।

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