2009-04-17 27 views
3

我有一個用C語言編寫的python模塊,我想添加一個在模塊卸載時調用的函數。我顯然有一個initfoo函數來初始化模塊 - 有沒有辦法告訴python在它初始化模塊時調用finifoo函數?是否有用C編寫的python模塊的fini例程?

是我的唯一選擇是atexit

回答

4

不在Python 2中,但是Python 3 seems to。如果你需要管理一些資源,我會建議把它放在一個模塊級別的對象中 - 我很確定這些將在模塊卸載時被垃圾收集。


從鏈接:

目前,擴展模塊 通常一次初始化,然後 「活」 下去。當調用Py_Finalize()時,唯一的例外是 :然後第二次調用 初始化例程 。

這表明您可以在您的初始化程序中設置一個靜態布爾值,該值在每次調用時都會翻轉。檢查它的狀態以查看模塊是否正在完成。

相關問題