是否存在用C编写的python模块的fini例程?
作者:互联网
我有一个用C编写的python模块,我想添加一个在模块卸载时调用的函数.我显然有一个initfoo函数来初始化模块-是否可以在未初始化模块时告诉python调用finifoo函数?
是我唯一的选择吗?
解决方法:
不是在Python 2中,而是在Python 3 seems to中.如果您需要管理一些资源,我建议您将其放在模块级对象中-我很确定在卸载模块时,这些资源将被垃圾回收.
从链接:
Currently, extension modules are
initialized usually once and then
“live” forever. The only exception is
when Py_Finalize() is called: then the
initialization routine is invoked a
second time.
这表明您可以在初始化器中设置一个静态布尔值,该布尔值在每次调用时都会翻转.检查其状态以查看模块是否正在完成.
标签:python-module,c-3,python 来源: https://codeday.me/bug/20191107/2004062.html