CPython里的GIL
2024-10-20 13:53:31
GIL不是Python特性,是CPython解释器特性,因为CPython有垃圾回收机制。
GIL 本质是互斥锁,保护解释器安全。
保证线程安全,垃圾回收线程不会和其他线程一起运行。
多个线程不能实现真正并行,因为解释器GIL锁的原因(同一时间解释器只执行一个线程),但是,线程A取得GIL锁后可能因为IO原因block住,此时该线程会释放GIL锁,给其他线程B使用。
但如果A有个自己的锁,虽然其他线程抢到了GIL锁,但其他线程还是要等A用完自己的锁才能执行。
对计算来说,CPU越多越好,但对IO阻塞型操作,CPU再多也没用。
对于纯计算任务,多线程并无卵用,宜开多进程。但对于IO密集型操作,宜开多线程。
开多个进程,GIL就不起作用,才能实现真正多核。
最新文章
- UDS(ISO14229-2006) 汉译(No.4 术语和缩写)
- Storm的ack机制在项目应用中的坑
- mix_alternates_for_parent: TRUE
- CentOS用yum安装、配置MariaDB
- 百度编辑器 无法获取post过去的值
- hdu 4345 Permutation 记忆化搜索
- SQL语句与正则表达式
- ubuntu安装kvm流程
- ssh框架搭建时报错
- Java Web学习笔记(1)
- gdb常用命令及使用gdb调试多进程多线程程序
- memcached集群和一致性哈希算法
- CSS第二篇
- WPF设置软件界面背景为MediaElement并播放视频
- tensorflow实战系列(一)
- 泛泰A870K去掉相机快门声音的方法
- HTML CSS + DIV实现整体布局 part1
- 20155327 2016-2017-4 《Java程序设计》第6周学习总结
- 《LeetBook》leetcode题解(20):Valid Parentheses[E]——栈解决括号匹配问题
- vue2.0读书笔记3 - router、vuex