如何在循环运行的函数中使用列表的当前内容



我尝试以这种方式使用多处理:

from multiprocessing import Pool
added = []
def foo(i):
    added = []
       # do something 
       added.append(x[i])
    return added
if __name__ == '__main__':
h = 0
while len(added)<len(c): 
   pool = Pool(4)
   result = pool.imap_unordered(foo, c)      
   added.append(result[-1])
   pool.close()
   pool.join()
   h = h + 1

多处理发生在 while 循环中,在 foo 函数中,
将创建added列表。在循环h的每个后续步骤中,列表added应按后续值递增,并且应在函数foo中使用当前列表added。是否可以在循环的每个后续步骤中将列表的当前内容传递给函数?因为在上面的代码中,foo函数每次都从头开始创建added列表的新内容。如何解决这个问题?

您可以使用multiprocessing.Queue . 粗略的想法是在主进程中构造其中一个,将其传递给子进程,每个foo()调用都可以调用put(x[i])向队列添加值。

然后,主进程将读取队列以收集结果。

相关内容

  • 没有找到相关文章

最新更新