我有以下的多碼我的多個過程可以更好的管理,使他們在完成(幾乎)在同一時間?
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 +分鐘,最後的過程中單獨對當時的重要組成部分運行。如果將工作負載重新分配到已完成的進程,則會更快,因此所有內核都可以使用整個時間。
有沒有辦法做到這一點?