当前位置:   article > 正文

python 多进程提速_multiprocessing没有变快

multiprocessing没有变快

事实上,很多时候Python的多线程是无法提速的。
这是因为CPython解释器本身不是线程安全的,因此存在全局解释器锁(GIL, global interpreter lock),1次只允许1个线程执行Python代码,因此,1个Python进程通常不能使用多个CPU核心。
与Python语言本身无关,Jython等没有这个限制。

ThreadPoolExecutor()函数需要1个参数指定线程池中线程的数量,而ProcessPoolExecutor()函数通常不需要指定进程数,默认是os.cpu_count()函数返回的CPU数量,也可以自行指定其他值,但对CPU密集型的处理而言,进程数不得超过CPU数量。


说了这么多,亲测有效的还是多进程加速

   import multiprocessing
   pool = multiprocessing.Pool(processes=4)
   return_value = pool.apply_async(func_name, (参数列表,))
   p.close()
   p.join()
  • 1
  • 2
  • 3
  • 4
  • 5

from multiprocessing import Pool
p = Pool()
result = p.apply_async(foo, args=(a, ))
# foo和a分别是你的方法和参数,这行可以写多个,执行多个进程,返回不同结果
 p.close()
 p.join()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

新建一个进程池,并指定本机cpu核心数量为4(看你的机子cpu有多少核)
这样主程序运行时就会建立出4个额外的进程,每个进程可以运行在不同核心上,从而实现了多核并行.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/74835
推荐阅读
相关标签
  

闽ICP备14008679号