码迷,mamicode.com
首页 > 编程语言 > 详细

区分python进程、线程、携协程

时间:2017-07-16 10:00:10      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:性能   概念   使用   胶水   设计   sel   多个   资源管理   线程   

进程:

  概念:对各种资源管理的集合。(线程也是一种资源)

  使用场景:CPU密集型运算,调用多进程,通过socket传输数据

 

线程:

  概念:CPU运算的最小单元

  使用场景:没有明确的切换条件,只能通过定时器切换

  注:python中只允许单线程操作内存中数据,也就是说用python即使开了多个线程实际上也是切换执行,并没有利用CPU的多核性能。究其原因,是python的全局解释器锁(GIL)。个人觉得,设计GIL与python的出发点相符,让程序更加简单,节省程序员时间,所以应用粗粒度的线程锁可以免去程序员对线程锁的繁杂操作。python也并不是设计成解决CPU密集型的计算问题,所以多线程的应用在解决非CPU密集型问题上没什么帮助。python作为胶水语言,可以通过黏合其他语言来解决此类问题。

 

协程:

  概念:用户态的轻量级线程

  使用场景:有明确的切换条件

  注:事件驱动本质上就是协程的思维。通过I/O多路复用(select、poll、epoll)方式来解决服务器与客户端数据收发的问题。

区分python进程、线程、携协程

标签:性能   概念   使用   胶水   设计   sel   多个   资源管理   线程   

原文地址:http://www.cnblogs.com/grantzhang/p/7189513.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!