python中的并行处理 [英] Parallel Processing in python
问题描述
在python 2.7中进行并行处理的简单代码是什么?我在网上找到的所有示例都是令人费解的,其中包括不必要的代码.
Whats a simple code that does parallel processing in python 2.7? All the examples Ive found online are convoluted and include unnecessary codes.
我将如何做一个简单的蛮力整数分解程序,在其中我可以在每个核(4)上分解一个整数?我的真实程序可能只需要2个内核,并且需要共享信息.
how would i do a simple brute force integer factoring program where I can factor 1 integer on each core (4)? my real program probably only needs 2 cores, and need to share information.
我知道并行python和其他库存在,但是我想使使用的库数最少,因此我想使用thread
和/或multiprocessing
库,因为它们是python附带的
I know that parallel-python and other libraries exist, but i want to keep the number of libraries used to a minimum, thus I want to use the thread
and/or multiprocessing
libraries, since they come with python
推荐答案
在python中开始并行处理的一个好方法就是在mutiprocessing中使用池映射-就像通常的python映射一样,但是各个函数调用散布开来在不同数量的进程中.
A good simple way to start with parallel processing in python is just the pool mapping in mutiprocessing -- its like the usual python maps but individual function calls are spread out over the different number of processes.
因子就是一个很好的例子-您可以蛮力检查分布在所有可用任务上的所有划分:
Factoring is a nice example of this - you can brute-force check all the divisions spreading out over all available tasks:
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
这给了我
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)]
这篇关于python中的并行处理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!