用于多处理pickle方法的可用内存

时间:2012-04-02 10:29:53

标签: python methods multiprocessing pickle

我正在使用这个问题的第一个答案

Overcoming Python's limitations regarding instance methods

能够在我自己的一个类的方法上使用多进程模块。

作为一个例子,让我说我有以下内容:

from multiprocessing import Pool

def myParallelFunc(my_list, a, b, inst):
    # do something
    return True

def myFunc:
    # instantiate custom class
    my_instance = MyObject()

    pool = Pool()
    pool.map(functools.partial(myParallelFunc, a=5, b=7, inst=my_instance), my_list)

    # SOLUTION!!!
    pool.close()

现在我有另一个调用myFunc的程序让我说100次。 每次我调用myFunc时,一些内存被占用并且永远不会被释放。 有没有办法明确释放它?

1 个答案:

答案 0 :(得分:1)

每次调用myFunc时都会创建一个新池。当myFunc退出时,它不会自动删除,因为子进程和相关线程仍然存在。

创建一个游泳池,为这100个电话保留它,然后。关闭它