python的多线程是否就完全没有用了呢?

相同的代码,为何有时候多线程会比单线程慢,有时又会比单线程快? 
这主要跟运行的代码有关: 
1、 CPU密集型代码 
(各种循环处理、计数等等 ),在这种情况下,由于计算工作多, ticks计数很快就会达到 
100阈值,然后触发 GIL的释放与再竞争 (多个线程来回切换当然是需要消耗资源的),所以 python下的多线程遇到 CPU密集型代码时,单线程比多线程效率高。 
IO密集型代码 (文件处理、网络爬虫等 ),多线程能够有效提升效率 
(单线程下有 IO操作会进行 IO等待,造成不必要的时间浪费,而开启多线程能在 
线程 
A等待时,自动切换到线程 
B,可以不浪费 
CPU的资源,从而能提升程序执行效率 
)。

进行 IO密集型的时候可以进行分时切换 所有这个时候多线程快过单线程( 
5)如果 python想充分利用多核 CPU,可以采用多进程, 每个进程有各自独立的 
GIL,互不干扰,这样就可以真正意义上的并行执行,所以在 
python中,多进程的执行效率优于多线程 
(仅仅针对多核 CPU而言 )。 
所以在多核 CPU下,想做并行提升效率,比较通用的方法是使用多进程,能够有效提高执行效率。

最新文章

  1. Atitit 知识管理的重要方法 数据来源,聚合,分类,备份,发布 搜索
  2. Android Studio教程从入门到精通
  3. (并查集)~APTX4869(fzu 2233)
  4. 高质量的javascript代码 -- 深入理解Javascript
  5. PostgreSQL 8.1 中文文档
  6. 如何使用eclipse进行嵌入式Linux的开发
  7. Android开源项目分类汇总【畜生级别】[转]
  8. DirectX11 With Windows SDK--17 利用几何着色器实现公告板效果
  9. Maven的安装、配置及使用入门+maven安装报错:JAVA_HOME【申明:来源于网络】
  10. lazy_import源码解析(原创)
  11. GUI学习之一——PyQt5初识
  12. 在运行create_list.sh时候报错:AttributeError: 'module' object has no attribute 'LabelMap'
  13. POJ 2583
  14. Codeforces Educational round 58
  15. linux批量远程多服务器FTP并下载文件的脚本
  16. apt-get install 和 pip install的区别
  17. csu 1550(字符串处理思路题)
  18. redis 通配符 批量删除key
  19. mysql主从复制、操作语句
  20. 洛谷——P1609 最小回文数

热门文章

  1. [译]开发者须知的SOLID原则
  2. Codeforces Round #499 (Div. 1) F. Tree
  3. Java数据结构-ArrayList最细致的解析笔记
  4. java之spring mvc之文件上传
  5. Charles配置https
  6. 自学Python编程的第十天(希望有IT大牛看见的指点小弟我,万分感谢)---------来自苦逼的转行人
  7. 解决SqlDataSource连接超时的问题
  8. C++ Primer Plus(第6版)习题(第二章)
  9. Java虚拟机如何运行Java字节码
  10. Resource interpreted as Document but transferred with MIME type application/json