生成进程是一种处理python内存泄漏的好方法吗?

时间:2015-12-24 10:46:41

标签: python memory memory-leaks python-multiprocessing

我有一个python方法,它在执行时导致内存泄漏,泄漏本身来自一个带有python绑定的C库,我无法控制:

for i in range(10):
    do_some_c_stuff() # Memory leaks at every invocation, not freed by garbage collector

我发现如果我生成一个进程然后终止它,则释放内存:

for i in range(10):
    p = multiprocessing.Process(target=do_some_c_stuff)
    p.start()
    p.join()
    p.terminate() # Memory is freed up here, (by the OS?)

我的问题是 - 这是处理这个问题的好方法还是我能做些什么?

1 个答案:

答案 0 :(得分:0)

  

我的问题是 - 这是处理这个问题的好方法吗

我不这么认为。产生一个过程是一项代价高昂的操作,每次你需要调用该函数时这样做会变得非常昂贵。

  

或者我能做些什么更好的事情?

是:联系软件作者,并要求修复它:)

如果那不可能,我会开始寻找替代方案。但是应该始终避免使用软件,知道泄漏。