这是创建图形并满足某些条件的代码片段的结构:
for i in range(1, len(binary_combinations)):
# ...something
h=0
while len(added)<i+1:
#...something
for j in it.combinations(good, 8):
#...something
h=h+1
binary_combinations
的地方,added
和good
它们是一些列表。我正在尝试为整个 for 循环实现多处理。或者仅用于函数 it.combinations
,但无济于事,因为我无法将其与 while-loop 的执行相协调。如何处理它?
据了解,您可以轻松地抽象第一个 for 循环:
from multiprocessing import Pool, cpu_count
import itertools as it
def foo(i):
global added
global good
h=0
while len(added)<i+1:
#...something
for j in it.combinations(good, 8):
#...something
h=h+1
pool = Pool(cpu_count())
results = pool.map(foo, range())
您在这里遇到的主要问题是,如果您正在改变#...something
代码块中的列表,它将毫无价值,因为进程不会共享其堆栈状态。