首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将独立循环分解为并行线程/进程的简单简单的方法

将独立循环分解为并行线程/进程的简单简单的方法
EN

Stack Overflow用户
提问于 2011-07-11 14:58:20
回答 2查看 9.4K关注 0票数 5
  1. 我有一个循环的密集计算,我希望他们被加速使用多核处理器,因为他们是独立的:所有的并行执行。在python中,最简单的方法是什么?
  2. 让我们想象一下,这些计算必须在最后加起来。如何轻松地将它们添加到列表或浮动变量中?

谢谢你所有的教学答案和使用python库;o)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-11 15:36:28

根据我的经验,多线程可能不会是一个可行的选择,以加快速度(由于全局解释器锁)。

multiprocessing模块是一个很好的替代方案。这可能成功,也可能不起作用,这取决于您最终需要将多少数据从一个进程传递到另一个进程。

另一个很好的选择是考虑在计算中使用numpy (如果您还没有)。如果您可以将代码向量化,那么即使在单个核心上,您也应该能够实现显着的加速。根据您的具体操作和numpy的构建,它甚至可以透明地将计算分布在多个核之间。

这里的编辑是一个使用multiprocessing模块执行简单计算的完整示例。它使用四个过程来计算数字从零到九的平方。

代码语言:javascript
复制
from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    pool = Pool(processes=4)              # start 4 worker processes
    inputs = range(10)
    result = pool.map(f, inputs)
    print result

这是一个简单的例子。考虑到f()的琐碎性质,这个并行版本几乎肯定比串行计算相同的东西要慢。

票数 12
EN

Stack Overflow用户

发布于 2011-07-11 15:11:49

在CPython中进行多核处理有点困难(多亏了吉尔 )。但是,它们是多处理模块,它允许使用子进程(而不是线程)来分割您在多个核上的工作。

只要您的代码真的可以被分割成多个部分,并且不依赖于共享对象,这个模块就可以直接使用。链接的文件应该是一个良好的起点。

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

https://stackoverflow.com/questions/6652124

复制
相关文章

相似问题

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