इसे आपके द्वारा उपयोग किए जाने वाले संसाधनों को बंद करने के लिए अच्छी शैली माना जाता है।
आम तौर पर, कचरा संग्रह के दौरान चीजें बंद होती हैं। लेकिन यह एक कार्यान्वयन विस्तार है जब __del__()
कहा जाता है। सीपीथॉन में, आपके पास संदर्भ गिनती है और जैसे ही उनका उपयोग नहीं किया जाता है, उतनी ही वस्तुओं को त्याग दिया जाता है। ज्योथन आदि के रूप में अन्य कार्यान्वयन अलग-अलग काम कर सकते हैं।
कार्यान्वयन कचरा संग्रहण को स्थगित या इसे पूरी तरह छोड़ करने की अनुमति दी है - यह कार्यान्वयन की गुणवत्ता की बात है कैसे कचरा संग्रहण कार्यान्वित किया जाता है, जब तक कि कोई वस्तुओं एकत्र कर रहे हैं कि अभी भी पहुंचा जा सकता है।
2.5 या 2.6 में, संदर्भ प्रबंधकों को इस तरह की समस्याओं का सामना करने के लिए पेश किया गया था। तब से, यह goot शैली इस तरह से फाइलों के साथ काम करने के लिए माना जाता है:
with open(...) as f:
# do stuff with file object f
# now it is automatically closed.
मैं zeromq पता नहीं है, लेकिन यह हो सकता है यह रूप में अच्छी तरह संदर्भ प्रबंधकों के लिए समर्थन किया है।
यदि मैं कमांड लाइन के माध्यम से एक-लाइनरिश काम करता हूं तो मैं व्यक्तिगत रूप से मैला हूं, लेकिन पूर्ण कार्यक्रमों में बल्कि सख्त होने लगता हूं। अंतर्निहित से स्पष्ट होना बेहतर है।
दिलचस्प बात यह है कि मैं ऊपर से मिले दूसरे सेनारियो का सामना कर रहा हूं। एक डेमॉन प्रक्रिया में मैं एक zmq सॉकेट खोलूंगा और उस संदर्भ को तब तक रोकूंगा जब तक प्रक्रिया बंद नहीं हो जाती है, उदा। SIGTERM प्राप्त करें। उस पल में, क्या मुझे स्पष्ट रूप से सॉकेट.क्लोज़() को आमंत्रित करना चाहिए या जीसी को नौकरी करना चाहिए? –
@ जेरी: उस मामले में बस प्रक्रिया को समाप्त कर दें। संसाधन ऑपरेटिंग सिस्टम द्वारा मुक्त किया जाएगा। जेडएमक्यू काम करेगा कि क्या है। इसके अतिरिक्त, जीसी आमतौर पर ऐसी परिस्थितियों में जितना संभव हो उतना साफ करने का प्रयास करेगा। –