• 我有一个密集的计算循环,我希望它们成为
    由于它们是独立的,因此可以使用多核处理器来加速:
    全部并行执行。最简单的方法是
    Python?
  • 让我们想象一下,这些计算必须在末尾求和。如何轻松地将它们添加到列表或float变量中?

  • 感谢您的所有教学方法的答案,并使用python库; o)

    最佳答案

    根据我的经验,多线程可能不是加快速度的可行选择(由于Global Interpreter Lock)。

    一个很好的替代方法是 multiprocessing 模块。根据您最终必须从一个过程传递到另一个过程的数据量,这可能行得通,也可能行不通。

    另一个不错的选择是考虑使用 numpy 进行计算(如果还没有的话)。如果可以对代码进行矢量化处理,那么即使在单个内核上,您也应该能够实现显着的加速。根据您正在执行的操作以及numpy的构建,它甚至可以透明地将计算分布到多个内核中。

    编辑这是使用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/

    10-13 09:33