这在很大程度上取决于组的数量、核的数量、实际计算的繁重程度,以及我可能忘记的其他几个因素。通过创建一个迭代器来生成所有的元组,可以避免考虑这个问题
(group, i)
出现在内部循环中,即将两个循环折叠为一个。这可以通过itertool's(cross)实现
product
:
粗略的例子:
from itertools import product
from multiprocessing import Pool
with Pool() as p:
p.map(compute_something, product(groups, idx)))
在大多数情况下,这应该可以很好地工作。