【发布时间】:2014-06-03 06:31:33
【问题描述】:
我有一个带有 2 个池的 for 循环:
if __name__ == '__main__':
for length in range(1, 15, 5):
def map_CCWP(it):
return CCWP(G, length, Ep)
pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())
Scores = pool.map(map_CCWP, range(R))
S = []
# some work to get S
def map_AvgIAC (it):
return avgIAC(G, S, Ep, I)
pool2 = multiprocessing.Pool(processes=multiprocessing.cpu_count())
T = pool2.map(map_AvgIAC, range(4))
但是,在运行时,它会使用越来越多的内存,这可能是因为它每次都会创建新的池工作者。我尝试在每次迭代结束时删除池,但它仍然增加了内存量。
另一种选择是将池置于条件下:
if pool == None:
pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())
而且它确实不使用那么多内存。但是,函数map_CCWP 和map_AvgIAC 的每次迭代参数都会发生变化,而且我发现pool.map 将使用map_CCWP 和初始length 和map_AvgIAC 和初始S。
如何在每次迭代都会改变且不增加内存使用量的函数上运行 Pool?
【问题讨论】:
标签: python multiprocessing pool