利用multiprocessing使Python进行并行计算

由于CPython中GIL的存在,python几乎无法用于并行计算,但是我们可以通过调用multiprocessing模块来使Python进行并行计算。
示例代码如下

1
2
3
4
5
6
7
8
9
10
11
import multiprocessing

def f(x):
return x * x

cores = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes=cores) #给定线程数
xs = range(5)
print(pool.map(f,xs))
pool.close()
pool.join()

  1. 使用前注意调用multiprocessing模块,在Python3中,该库并非第三方库,因此可以直接调用
  2. cpu密集型计算尽量让线程数接近核数,io密集型则不一定。