我有这样的Python脚本:
import module
globalvariable a
def read(key):
x = funcA(a, key)
ret = funcB(x)
if ret == True:
return "Success"
else:
return "Failure"
我不时通过Python-C-API从C ++程序中反复调用此函数。我注意到,每次调用此函数时,我的C ++进程内存都在不断增加。
经过大量调查后:
我发现C ++内存在增加,原因是Python脚本本身而不是Python-C-API。我通过将上述脚本替换为虚拟脚本(没有变量并且不执行任何操作)并重复调用同一函数来确认这一点。进程内存是恒定的,并且这次没有增加。
如何在每次函数调用后强制Python垃圾收集器释放所有变量?我不知道Python GC是否/何时释放内存。我在其他stackoverflow答案中注意到一些建议,强迫垃圾收集器进行收集是一件坏事。
如何确保每次调用python脚本时c ++进程都不会占用额外的内存?就像在我声明的所有本地python变量上调用del()一样简单吗?还是有其他方法?
我还从导入的模块中调用了很多函数,我不知道这是否也会影响垃圾回收。