मैं अपने एप्लिकेशन चलाने के हिस्से के रूप में दूरस्थ डेटाबेस से एक शब्दकोश बनाता हूं। यह प्रक्रिया सुंदर I/O भारी है, इसलिए मैंने इस शब्दकोश का "सिंगलटन" उदाहरण बनाने का निर्णय लिया है और इसे केवल मेरे आवेदन में जरूरी है क्योंकि इसे कॉल करें।एक अजगर मॉड्यूल एक सिंगलटन की तरह क्यों कार्य करता है?
state_code_dict = None
def get_state_code_dict():
global state_code_dict
if state_code_dict == None:
state_code_dict = generate_state_code_dict()
return state_code_dict
मैं तो आयात और फोन get_state_code_dict()
समारोह जहां जरूरत:
कोड की तरह (Dictionaries.py
में) लग रहा है। मैंने यह जांचने के लिए एक प्रिंट स्टेटमेंट जोड़ा कि state_code_dict
को पुन: प्रारंभ या पुन: उपयोग किया जा रहा था, और मैंने पाया कि इसे पुन: उपयोग किया जा रहा था (जो कार्यक्षमता मैं चाहता हूं)। आवेदन चलाने से state_code_dict
का उदाहरण क्यों चल रहा है?
संपादित
मैं एकाधिक फ़ाइलों में get_state_code_dict
समारोह आयात करते हैं।
क्योंकि आयातित कोड केवल पहली बार निष्पादित किया जाता है? – KurzedMetal
स्पष्ट करने के लिए संपादित: मैं एकाधिक स्थानों में कोड आयात करता हूं (एकाधिक फ़ाइलों में 'get_state_code_dict' फ़ंक्शन शामिल है। –
दुभाषिया पहले से लोड किया गया कोड आयात करना डिफ़ॉल्ट रूप से उस कोड को फिर से लोड नहीं करेगा।जानबूझकर मॉड्यूल को फिर से लोड करना संभव है, लेकिन यदि आपको किसी भी कारण से ऐसा करना है क्योंकि मॉड्यूल का वास्तविक कोड रनटाइम के दौरान बदल सकता है, तो संभवतः आपको ऐसा करने के लिए एक अलग प्रोग्रामिंग मुहावरे का उपयोग करना चाहिए। –