在 Python 中使用多处理的 for 循环



这是创建图形并满足某些条件的代码片段的结构:

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的地方,addedgood它们是一些列表。我正在尝试为整个 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代码块中的列表,它将毫无价值,因为进程不会共享其堆栈状态。

相关内容

  • 没有找到相关文章

最新更新