Joe*_*ard 6 python parallel-processing fork-join python-3.x
我正在寻找Python 的fork-join 模型的实现。作为 Java 的 ForkJoinPool,它应该允许将一个任务的工作递归地拆分(fork)为多个子任务。子任务完成后,结果将被连接并返回。理想情况下,它应该支持类似于concurrent.futures中的ThreadPoolExecutor和ProcessPoolExecutor的线程和进程,但目前线程更重要。它必须允许限制线程数量(我希望每个核心有一个线程)。我知道这只有在代码释放 GIL 时才有用。
维基百科的示例用于阐明 fork-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
Run Code Online (Sandbox Code Playgroud)
Python中有这样的库吗?我找不到。
小智 0
我认为你想要的是收集结果,multiprocessing.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]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5523 次 |
| 最近记录: |