首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python多重处理-并行处理

Python多重处理-并行处理
EN

Stack Overflow用户
提问于 2016-11-06 09:17:10
回答 1查看 59关注 0票数 0

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

代码语言:javascript
复制
#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的答案

您要么希望在for循环之外单独地加入您的进程(例如,将它们存储在一个列表中,然后迭代它).

所以如果我修改我的代码

代码语言:javascript
复制
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发布的解决方案,作为我之前链接的问题的答案,所以我对不使用这些问题的解决方案很感兴趣。

EN

回答 1

Stack Overflow用户

发布于 2016-11-06 09:20:27

是的,这将并行进行。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40447724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档