我有以下多处理代码
from multiprocessing import Pool
pool = Pool(maxtasksperchild=20)
likelihoods = pool.map_async(do_comparison, itertools.combinations(clusters, 2)).get()
condensed_score_matrix = [1 / float(l) if l != 0 and l < 5 else 10 for l in likelihoods]
spectra_names = [c.get_names()[0] for c in clusters]
pool.close()
这段代码的问题是不同的进程不会同时完成。我正在使用八个进程。第一个进程完成和最后一个进程完成之间可能有 20-30+ 分钟,最后一个进程在大部分时间单独运行。如果将工作负载重新划分为已完成的进程,这样会更快,以便始终使用所有内核。
有没有办法做到这一点?