2009-02-20 17 views
7

अनलोड करता है तो मेरे पास एक मॉड्यूल है जो स्थिर लाइब्रेरी से कक्षा में कुछ कार्यक्षमता को लपेटने के लिए ctypes का उपयोग करता है। जब मॉड्यूल लोड होता है, तो यह स्थिर पुस्तकालय में प्रारंभिक कार्य को कॉल करता है। जब मॉड्यूल अनलोड किया जाता है (संभावित रूप से जब दुभाषिया निकलता है), लाइब्रेरी में एक अनलोड फ़ंक्शन है जिसे मैं कॉल करना चाहता हूं। मैं यह हुक कैसे बना सकता हूं? (?): एक डेकोरेटर के रूप में register का उपयोग कर,पता लगाएं कि जब कोई पाइथन मॉड्यूल

import mymodule 
import atexit 

# call mymodule.unload('param1', 'param2') when the interpreter exits: 
atexit.register(mymodule.unload, 'param1', 'param2') 

डॉक्स से एक और सरल उदाहरण:

उत्तर

13

atexit मॉड्यूल का उपयोग करें,

import atexit 

@atexit.register 
def goodbye(): 
    print "You are now leaving the Python sector." 
+0

atexit एक असुविधाजनक/अशुद्ध समाधान हो सकता है, खासकर अगर प्रक्रिया कांटा आदि। शायद जादू को छोड़ना और "क्लीनअप"/अंतिमकरण समारोह प्रदान करना बेहतर है जिसे मॉड्यूल उपयोगकर्ता को कॉल करना चाहिए? – u0b34a0f6ae

+0

यदि आप 'फोर्क' करते हैं तो आप बच्चे की प्रक्रिया को भी साफ करना चाहते हैं, क्योंकि यह सभी मेमोरी संरचनाओं को साझा करेगा। – nosklo

+0

क्या किसी अन्य परिस्थिति के कारण मॉड्यूल अनलोड होने के पल को पकड़ने का कोई तरीका है? (उदा।, अगर उस पर 'रीलोड'' कहा जाता है?) – max

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