GIL不是Python特性,是CPython解释器特性,因为CPython有垃圾回收机制。

GIL 本质是互斥锁,保护解释器安全。

保证线程安全,垃圾回收线程不会和其他线程一起运行。

多个线程不能实现真正并行,因为解释器GIL锁的原因(同一时间解释器只执行一个线程),但是,线程A取得GIL锁后可能因为IO原因block住,此时该线程会释放GIL锁,给其他线程B使用。

但如果A有个自己的锁,虽然其他线程抢到了GIL锁,但其他线程还是要等A用完自己的锁才能执行。

对计算来说,CPU越多越好,但对IO阻塞型操作,CPU再多也没用。

对于纯计算任务,多线程并无卵用,宜开多进程。但对于IO密集型操作,宜开多线程。

开多个进程,GIL就不起作用,才能实现真正多核。

最新文章

  1. UDS(ISO14229-2006) 汉译(No.4 术语和缩写)
  2. Storm的ack机制在项目应用中的坑
  3. mix_alternates_for_parent: TRUE
  4. CentOS用yum安装、配置MariaDB
  5. 百度编辑器 无法获取post过去的值
  6. hdu 4345 Permutation 记忆化搜索
  7. SQL语句与正则表达式
  8. ubuntu安装kvm流程
  9. ssh框架搭建时报错
  10. Java Web学习笔记(1)
  11. gdb常用命令及使用gdb调试多进程多线程程序
  12. memcached集群和一致性哈希算法
  13. CSS第二篇
  14. WPF设置软件界面背景为MediaElement并播放视频
  15. tensorflow实战系列(一)
  16. 泛泰A870K去掉相机快门声音的方法
  17. HTML CSS + DIV实现整体布局 part1
  18. 20155327 2016-2017-4 《Java程序设计》第6周学习总结
  19. 《LeetBook》leetcode题解(20):Valid Parentheses[E]——栈解决括号匹配问题
  20. vue2.0读书笔记3 - router、vuex

热门文章

  1. poj3211 Washing Clothes
  2. SD 卡PIN定义
  3. mysql 找出外键等约束
  4. MySQL-获取某天的数据
  5. ZooKeeper学习笔记(一)
  6. EasyHLS实现将IPCamera摄像机的RTSP转HLS直播输出
  7. final、finally、三个关键字的区别
  8. 关于ActiveMQ接收端停止接收的方法
  9. self = [super init]的解释
  10. MT6737 Android N 平台 Audio系统学习----录音到播放录音流程分析