如何在python中使用multiprocessing.Pool

时间:2014-05-01 16:38:04

标签: python multiprocessing pool

我需要多次根据相同的数据运行相同的功能。 为此我使用multiprocessing.Pool来加速计算。

from multiprocessing import Pool
import numpy as np
x=np.array([1,2,3,4,5])

def func(x): #this should be a function that takes 3 minutes 
    m=mean(x)
    return(m)

p=Pool(100)
mapper=p.map(multiple_cv,[x]*500)

该程序运行良好,但最后我打开了100个python进程,所有系统都开始变慢。

我该如何解决这个问题? 上午

我以错误的方式使用Pool?我应该使用其他功能吗?

编辑:使用p = Pool(multiprocessing.cpu_count())我的电脑会100%使用它吗? 或者还有其他我应该使用的东西?

2 个答案:

答案 0 :(得分:2)

除了限制自己

p = Pool(multiprocessing.cpu_count())

我相信你在完成后也要做以下事情......

p.close()

这应该在完成后结束该过程。

答案 1 :(得分:1)

作为一般规则,您不需要比CPU内核多得多的池,因为您的计算机将无法将工作并行化,超出可用于实际处理的核心数量。如果你的CPU只能同时处理四件事,那么你有100个进程并不重要。通常的做法是这样做

p = Pool(multiprocessing.cpu_count())