Python 的分叉连接模型实现?(相当于Java的ForkJoinPool)



我正在寻找python的叉-Join模型的实现。作为Java的Forkjoinpool,它应该允许将任务的工作递归(叉)递归地分为几个子任务。一旦完成任务完成,结果就会加入并返回。理想情况下,它应支持与汇总中的线程poolexecutor和ProcessPoolExecutor相似的线程和过程。目前,线程更为重要。它必须允许限制线程数(我想每个核心有一个线程)。我知道,只有在代码发布GIL时才有用。

Wikipedia的示例澄清叉-Join模型:

solve(problem):
    if problem is small enough:
        solve problem directly (sequential algorithm)
    else:
        for part in subdivide(problem)
            fork subtask to solve(part)
        join all subtasks spawned in previous loop
        return combined results

python有这样的库吗?我找不到一个。

我认为您想要的是收集结果,多处理。Starmap()可能是选择,这是示例

import multiprocessing as mp
def func(x, y):
    return x + y
l = list()
with mp.Pool(mp.cpu_count()) as p:
    l = p.starmap(func, [(1,2), (2,3), (3,4)])
print(l)  # result in [3, 5, 7]

最新更新