并行Python:只运行函数n次
我有一个Python函数,它的输出是一个多维的numpy数组。这个函数是一个蒙特卡洛模拟,里面用到了随机数。我想用相同的输入运行这个函数n次,收集这些数据,然后计算平均值。有没有简单的方法可以用multiprocessing
来实现这个呢?
1 个回答
2
比如说,使用简单的平方函数来计算平均值,这里用到了4个进程:
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
pool = Pool(processes=4)
n = 10000000
inputs = xrange(n)
# calc f output using 4 processes
out_list = pool.map(f, inputs)
# average
print sum(out_list) / float(n)