我有一个对象列表,我使用和clusters
相互比较:itertools.combinations
map()
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()
使用更少的内存吗?