当前位置:   article > 正文

Python多线程使用需警惕_配合判断电脑可以开多少python线程

配合判断电脑可以开多少python线程

Python中除了常用的thread与threading模块可以实现多线程

multiprocessing.dummy模块也可以实现多线程

它是multiprocessing模块的一个复制,multiprocessing模块是用来处理多进程的,但多进程不同进程不共享内存,所以需要消耗大量资源。

以下是一个使用multiprocessing.dummy模块实现多线程与单线程的比较

  1. from multiprocessing.dummy import Pool as ThreadPool
  2. import time
  3. def f(x):
  4. val=x
  5. for i in xrange(100000):
  6. if i!=0:
  7. val*=i
  8. val%=10000
  9. return x
  10. start = time.time()
  11. iter=10000
  12. pool=ThreadPool(8)
  13. res=pool.map(f,xrange(100))
  14. pool.close()
  15. pool.join()
  16. pool=ThreadPool(8)
  17. res2=pool.map(f,xrange(100))
  18. pool.close()
  19. pool.join()
  20. print "Elapsed Time: %s" % (time.time() - start)
  1. from multiprocessing.dummy import Pool as ThreadPool
  2. import time
  3. def f(x):
  4. val=x
  5. for i in xrange(100000):
  6. if i!=0:
  7. val*=i
  8. val%=10000
  9. return x
  10. start = time.time()
  11. iter=10000
  12. for i in xrange(100):
  13. f(i)
  14. for i in xrange(100):
  15. f(i)
  16. print "Elapsed Time: %s" % (time.time() - start)

在我的机器上,单线程版本跑了7s,多线程版本跑了14s,不合常理吧

关键在于Python对多线程的支持受到Global Interpreter Lock (GIL)的限制,一次只能一个线程在运行,所以导致多线程不是我们所想象的多个线程在不同cpu核上同时运行的情况。


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

闽ICP备14008679号