- 我有一个密集计算循环,我希望它们是 使用多核处理器加速,因为它们是独立的: 全部并行执行。最简单的方法是什么 python ?
- 让我们想象一下,这些计算必须在最后相加。如何轻松地将它们添加到列表或浮点变量中?
感谢您所有的教学回答和使用 python 库 ;o)
最佳答案
根据我的经验,多线程可能不是加快速度的可行选择(由于 Global Interpreter Lock)。
一个不错的选择是 multiprocessing
模块。这可能会或可能不会很好地工作,具体取决于您最终必须从一个进程传递到另一个进程的数据量。
另一个好的选择是考虑使用 numpy
用于您的计算(如果您还没有)。如果您可以矢量化您的代码,那么即使在单核上,您也应该能够实现显着的加速。根据您具体在做什么以及您构建的 numpy
,它甚至可以透明地跨多个内核分配计算。
edit 下面是使用 multiprocessing
模块执行简单计算的完整示例。它使用四个过程来计算从零到九的数字的平方。
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()
的微不足道的性质,这个并行版本几乎肯定会比串行计算相同的东西慢。
关于python - 将独立循环分解为并行线程/进程的简单且最简单的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6652124/