2009-02-20 29 views
7

Statik bir kütüphaneden bir işleve bazı işlevleri sarmak için ctypes kullanan bir modülüm var. Modül yüklendiğinde, statik kitaplıktaki bir başlatma işlevini çağırır. Modül kaldırıldığında (muhtemelen tercüman çıktığı zaman), kütüphanede aranmak istediğim bir boşaltma fonksiyonu vardır. Bu kancayı nasıl oluşturabilirim? (?): Bir dekoratör olarak register kullanılarakBir Python modülünün ne zaman boşaldığını tespit edin

import mymodule 
import atexit 

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

dokümanlar bir başka basit bir örnek:

cevap

13

atexit modülünü kullanarak, özellikle

import atexit 

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

atexit uygunsuz/kirli bir çözüm olabilir işlem çatalları vb. Belki de sadece sihiri atlamak ve modül kullanıcısının araması gereken bir "temizleme"/sonlandırma işlevi sağlamak daha iyidir. – u0b34a0f6ae

+0

Eğer çatandınızsa, tüm bellek yapılarını paylaşacağından çocuk sürecini de temizlemek istiyorsunuz. – nosklo

+0

Modülün başka bir durum nedeniyle boşaldığı anı yakalamanın bir yolu var mı? (Örn, eğer bir 'reload' üzerine çağrılırsa?) – max

İlgili konular