Python多处理并行进程

2024-10-01 05:01:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python多处理的新手,我正在尝试实现一些并行计算。我得到的信息是:

#M is an integer, contains the number of processes I'd like to launch.
results = []
for i in range(0, M):
        p = Process(target=processchild, args=(data[i],q))
        p.start()
        result.append(q.get())
        p.join()

仍然是顺序的,因为.join()会导致循环等待p完成后再开始下一个循环。我读过here的答案,那

You'll either want to join your processes individually outside of your for loop (e.g., by storing them in a list and then iterating over it)...

如果我把代码修改成

results = []
for i in range(0, M):
        processes[i] = Process(target=processchild, args=(data[i],q))
        processes[i].start()
        result.append(q.get())

for i in range(0, M):
        processes[i].join()

它现在真的会并行运行吗?如果没有,我如何修改我的代码来工作?我已经阅读了使用numpy.Poolapply_async作为我之前链接的问题的答案发布的解决方案,所以我最感兴趣的是不使用这些的解决方案


Tags: oftointargetfordataargsrange
1条回答
网友
1楼 · 发布于 2024-10-01 05:01:38

是的,这将并行运行

所有进程都是在您尝试加入一个进程之前启动的,因此这不会在第一个进程之后阻塞

相关问题 更多 >