python中的并行处理

cal*_*pto 36 python parallel-processing

什么是在python 2.7中进行并行处理的简单代码?我在网上找到的所有例子都很复杂,包括不必要的代码.

我怎么做一个简单的强力整数分解程序,我可以在每个核心(4)上计算1个整数?我的真实程序可能只需要2个核心,并且需要共享信息.

我知道parallel-python和其他库存在,但我想将库的数量保持在最低限度,因此我想使用thread和/或multiprocessing库,因为它们带有python

Jon*_*rsi 31

在python中开始并行处理的一个简单方法就是多处理中的池映射 - 它类似于通常的python映射,但是单个函数调用分布在不同数量的进程上.

保理就是一个很好的例子 - 你可以强力检查所有可用任务的所有部门:

from multiprocessing import Pool
import numpy

numToFactor = 976

def isFactor(x):
    result = None
    div = (numToFactor / x)
    if div*x == numToFactor:
        result = (x,div)
    return result

if __name__ == '__main__':
    pool = Pool(processes=4)
    possibleFactors = range(1,int(numpy.floor(numpy.sqrt(numToFactor)))+1)
    print 'Checking ', possibleFactors
    result = pool.map(isFactor, possibleFactors)
    cleaned = [x for x in result if not x is None]
    print 'Factors are', cleaned
Run Code Online (Sandbox Code Playgroud)

这给了我

Checking  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]
Factors are [(1, 976), (2, 488), (4, 244), (8, 122), (16, 61)]
Run Code Online (Sandbox Code Playgroud)

  • 我应该补充说上面的工作,但可能不会执行惊人的并行性能,因为你调用的开销(并行映射+函数调用)都是为了计算一小部分工作(一点点的整数运算) ).我将把它作为练习让读者思考如何在更多的部门上分摊开销 - 例如,如何更改上面的代码,以便为多个部门调用"isFactor"一次. (2认同)

Tim*_*ara 8

mincemeat是我发现的最简单的map/reduce实现.此外,它依赖于非常轻松 - 它是一个单独的文件,并使用标准库完成所有事情.

  • 它更适用于数据库和服务器以及类似的东西(多台计算机).我只想尝试一次运行多个功能 (2认同)