PYTHON协程 - Go语言中文社区

PYTHON协程


协程

  • 是一个比线程更轻量级单位,是组成现成的各个函数。
  • 在一个线程内可以实现并发。当某个函数发生IO操作,可以马上切换到另一个函数去执行。提高单线程的cpu利用率。
  • 使用yield可以保存当前状态,实现函数暂停。只是单存的切换,不支持IO操作时,自动切换。
def consumer():
        while 1:
                x=yield                            #函数暂停
                print(x)
def producer():
        g=consumer()
        next(g)
        for i in range(100):
                g.send(i)                          #传值给yield
                print ("is producing")
producer()
#结果输出
0
is producing
1
is producing
2
is producing
3
is producing
4
is producing
5
is producing
6
is producing
  • import gevent 当函数中遇到IO操作时,就自动切换到另一个函数
    gevent.spawn(func,参数)
    gevent.join() 让函数func执行完毕
    func停止的原因,func执行完了 遇到IO操作
import gevent

def func1():
    print ("1,2,3,4")
        gevent.sleep(1)
        print ("5,6,7,8")
        gevent.sleep(1)

def func2():
    print ("4,3,2,1")
        gevent.sleep(1)
        print ("8,7,6,5")

g1=gevent.spawn(func1)
g2=gevent.spawn(func2)
g1.join()

#结果
1,2,3,4
4,3,2,1
5,6,7,8
8,7,6,5
版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/91487ff1d26c
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 13:08:41
  • 阅读 ( 1166 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢