我已将一段代码缩小到以下最小(工作?)示例:
import multiprocessing
def f(x): return x**2
for n in xrange(2000):
P = multiprocessing.Pool()
sol = list(P.imap(f, range(20)))
当我在我的计算机(Ubuntu 12.04,8 核)上运行它时,python 继续消耗所有可用内存,最终由于交换无响应而挂起系统。我听说 Python 在完成之前不会释放内存,但我认为这个程序应该消耗超过 8Gb 的 RAM 有点愚蠢。如果我想multiprocessing.Pool
一遍又一遍地创建对象,如何在不每次都重新分配新内存的情况下做到这一点?