python随笔系列--多进程多线程并发度初探

大家都知道python中由于GIL这把大锁的存在,导致python的多线程并不是真正的多线程(不同于java等语言)。首先了解下GIL导致的现象:同一时间只能有一个线程占有python解释器(或者,同一时刻只有一个线程对共享资源进行存取);而多进程不受GIL的影响是因为:每个 fork 的进程有一个单独的 GIL。关于GIL的详细内容请自行延申推荐参考

接下来用一个如下的函数(纯计算,不涉及I/O)放到死循环里对多线程和多进程能使用多少从cpu做测试
python随笔系列--多进程多线程并发度初探
测试机cpu正常情况如下
python随笔系列--多进程多线程并发度初探

先看不用进程/线程模式:

python随笔系列--多进程多线程并发度初探
cpu使用情况如下
python随笔系列--多进程多线程并发度初探

多线程模式:

python随笔系列--多进程多线程并发度初探
cpu使用情况如下
python随笔系列--多进程多线程并发度初探

多进程模式:

python随笔系列--多进程多线程并发度初探
cpu使用情况如下
python随笔系列--多进程多线程并发度初探
可以看到python中CPU密集的任务,应该优先使用多进程模型;不过对于I/O密集型任务,多线程每个线程遇到I/O操作时,会让出python解释器,从而实现I/O等待这个环节的并发,亦可以实现 出比穿行快得多的程序,而且比多进程更轻量。

转载于:https://blog.51cto.com/kaifly/2358357

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值