从python中的并行处理开始的一个简单好方法就是多处理中的池映射-它与通常的python映射一样,但是各个函数调用分布在不同数量的进程中。
分解就是一个很好的例子-您可以蛮力检查分布在所有可用任务上的所有划分:
from multiprocessing import Poolimport numpynumToFactor = 976def isFactor(x): result = None div = (numToFactor / x) if div*x == numToFactor: result = (x,div) return resultif __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
这给我
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)]



