协程

协程

  • 一个线程下单位
  • 协程是程序员自己编制出来的,是不被操作系统所承认的,不受操作系统的控制,需要我们调用模块去实现协程
  • 他是处理线程的io时可以使用协程,加快运行速度,因为GIL锁的存在,所以我们使用到线程去运行代码时,其实就是处理io密集型的代码,这个时候如果一个线程下面,有多个io,那么如果我们不去处理,他是会按照串行的方式去运行代码的,那样很耗费时间,我们协程就是把下面的io密集型的代码,改变成并发的模式去运行,节省时间,加快运行速度
  • 协程之后在io密集型下才有意义
from gevent import monkey;monkey.patch_all()
import gevent
import time

def foo():
    print(1)
    time.sleep(3)
    print(2)

def foo1():
    print(3)
    time.sleep(3)
    print(4)
start = time.time()
g1 = gevent.spawn(foo)
g2 = gevent.spawn(foo1)
g1.join()
g2.join()
end = time.time()
print(end-start)

# 代码运行结果
    1
    3
    2
    4
    3.0039689540863037
上一篇:python – map()和imap()如何在gevent.pool.Pool中工作?


下一篇:迭代器--》生成器--》协程的关系与区别