GIL的意义

只要是单进程不论是单还是多线程,无论是单核还是多核CPU,都是每次执行一个线程,前者是串行,后者是并发。
只要是多进程就可以在多核CPU上并行,当然如果在单核CPU还是并发。

为何不取消GIL?

CPU bound:计算密集,CPU一直运作。使用多进程。
IO bound:输入输出密集,CPU大部分时间是闲置,比如内存IO,网络IO,磁盘IO,sleep函数。使用单进程多线程与多进程单线程相比更省资源。

补充1

计算机有五部分:
控制器、运算器,对应CPU
存储器,对应内存条与硬盘
输入设备,对应键盘、鼠标、触控板、摄像头、麦克风等
输出设备,对应显示器、打印机、投影仪等

补充2

CPU寄存器速度:1ns
CPU缓存器速度:10ns
内存条速度:100ns
磁盘速度:10ms=1e7ns

https://blog.csdn.net/cl05300629/article/details/92798887

平滑的代码过渡

threading与multiprocessing几乎一致

不论多线程还是单线程:
单进程——一个解释器
多进程——多个解释器
每个解释器对应一个GIL

不同的任务不同的解决方案

对比

接下来我想做这18种的对比,有点多,有人可以和我一起吗?嘿嘿嘿。

对比三种情况:CPU密集、IO密集、混合密集

每种情况又有六种类型:
单进程单线程
单进程多线程
多进程单线程(每个进程为单线程)
多进程多线程(每个进程为多线程)
线程池
进程池

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值