由于python中的多线程比较特殊,所以协程的概念就变得尤为珍贵了,对于cpu密集型的操作,使用协程的效率无疑要好过多线程很多。因为协程的创建及其间切换的时间成本要低于线程很多。也因为这一点,很多人说,协程才是python的未来,重要不重要!!!

  python中提供协程的模块有两个,greenlet和gevent。greenlet和gevent最大的区别在于greenlet需要你自己来处理线程切换, 就是说,你需要自己指定现在执行哪个greenlet再执行哪个greenlet。ps:这两个包都不是python自带的,所以需要手动安装一下,pip就可以轻松搞定!

    python——协程    python——协程

  左侧图是greenlet的用法,我已经将执行顺序标注出来了,从图中我们不难看出greenlet的执行顺序是需要我们手动控制的,现在再看看右侧的图是gevent的用法,就智能多了,它不需要我们自己去支配,只要一个协程稍有空闲,gevent就帮你进行切换,已达到cpu的最大利用率。

 1 #!/usr/bin/env python 
 2 # -*- coding:utf-8 -*-
 3 __author__ = 'Eva_J'
 4 
 5 from greenlet import greenlet
 6   
 7 def test1(): 
 8     print 12
 9     gr2.switch() 
10     print 34
11     gr2.switch() 
12   
13   
14 def test2(): 
15     print 56
16     gr1.switch() 
17     print 78
18   
19 gr1 = greenlet(test1) 
20 gr2 = greenlet(test2) 
21 gr1.switch() 
greenlet Code

相关文章:

  • 2021-10-25
  • 2021-09-27
猜你喜欢
  • 2022-12-23
  • 2021-09-20
  • 2021-09-26
  • 2021-09-12
  • 2021-10-05
  • 2021-05-21
  • 2021-04-22
  • 2021-08-05
相关资源
相似解决方案