1

我有一个对象列表,我使用和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()使用更少的内存吗?

4

0 回答 0