multiprocessing.Pool.map_async()使用比map()更多的内存

时间:2013-10-30 10:24:19

标签: python memory multiprocessing out-of-memory

我有一个对象列表clusters,我使用itertools.combinationsmap()相互比较:

likelihoods = map(do_comparison, itertools.combinations(clusters, 2))

为了加快速度,我改为使用多个进程:

from multiprocessing import Pool
pool = Pool(6)
likelihoods = pool.map_async(do_comparison, itertools.combinations(clusters, 2)).get() 

对于小型列表,这很有用。但是,对于clusters(139436650组合)中的16700个对象,pool.map_async()使用了大量内存,而且我的电脑很快耗尽内存,而map()没有内存问题。

我的电脑在启动多个进程之前内存不足,所以我的猜测是它仍然在不同的进程上划分数据块。所以我尝试使用chunksize=1,因此它只需要它的一小部分,但现在这确实有效。

还有其他方法让map_async()使用更少的内存吗?

0 个答案:

没有答案