专栏名称: 编程派
Python程序员都在看的公众号,跟着编程派一起学习Python,看最新国外教程和资源!
目录
相关文章推荐
Python爱好者社区  ·  蚂蚁集团发布全员信:薪资大调整。 ·  2 天前  
Python爱好者社区  ·  多模态,杀疯了! ·  3 天前  
Python爱好者社区  ·  yyds!《LLM书》PDF ·  2 天前  
Python爱好者社区  ·  卧槽,这就是最牛逼的python教程 ·  4 天前  
Python开发者  ·  自己编写作弊软件骗过大厂!00后拿4个顶级o ... ·  4 天前  
51好读  ›  专栏  ›  编程派

单线程、多线程和多进程的效率对比实验

编程派  · 公众号  · Python  · 2017-02-16 11:51

正文

文 | 饒木陽

Python 是运行在解释器中的语言,查找资料知道, python 中有一个全局锁( GI),在使用多进程( Threa)的情况下,不能发挥多核的优势。而使用多进程( Multiprocess),则可以发挥多核的优势真正地提高效率。

对比实验

资料显示,如果多线程的进程是 CPU 密集型的,那多线程并不能有多少效率上的提升,相反还可能会因为线程的频繁切换,导致效率下降,推荐使用多进程;如果是 IO 密集型,多线程进程可以利用 IO 阻塞等待时的空闲时间执行其他线程,提升效率。所以我们根据实验对比不同场景的效率

(1)引入所需要的模块

(2)定义 CPU 密集的计算函数

(3)定义 IO 密集的文件读写函数

(4) 定义网络请求函数

(5)测试线性执行 IO 密集操作、 CPU 密集操作所需时间、网络请求密集型操作所需时间

输出

CPU 密集:95.6059999466、91.57099986076355 92.52800011634827、 99.96799993515015

IO 密集:24.25、21.76699995994568、21.769999980926514、22.060999870300293

网络请求密集型: 4.519999980926514、8.563999891281128、4.371000051498413、4.522000074386597、14.671000003814697

(6)测试多线程并发执行 CPU 密集操作所需时间

(7)测试多线程并发执行 IO 密集操作所需时间







请到「今天看啥」查看全文