首页 > 解决方案 > Python在并行化任务中包含while循环

问题描述

我正在尝试构建一个并行化任务,其中一组计算以不同的参数集并行发生。然后在这些独立任务中的每一个中,都有一些 while 循环,这些循环中的每一个都通过一系列参数运行。

每个并行化任务的结果都保存在 csv 文件中。然而,while 循环似乎没有进行每个并行化任务在 while 循环的第一次迭代时停止。

对此有什么可能的解释吗?

实际代码在这里发布的方式很大,但抽象可能是这样的:

def inner_func(a,b):
    while a<b:
        write_to_file(a)
        a++

if __name__ == '__main__':
    arguments=[(a,b),(b,c)]
    with multiprocessing.Pool(processes=6) as pool:
        pool.map(inner_func, arguments)

标签: pythonmultiprocessing

解决方案


您提供的代码包含错误,我已将其修复为:

import multiprocessing


def inner_func(input):
    a = input[0]
    while a < input[1]:
        print(a)
        a = a + 1


if __name__ == '__main__':
    arguments = [(1, 4), (5, 8)]

    with multiprocessing.Pool(processes=6) as pool:
        pool.map(inner_func, arguments)

执行导致:

结果

它解决了你的问题吗?


推荐阅读