美文网首页
PYTHON协程

PYTHON协程

作者: ScienBeast | 来源:发表于2018-10-17 21:57 被阅读0次

    协程

    • 是一个比线程更轻量级单位,是组成现成的各个函数。
    • 在一个线程内可以实现并发。当某个函数发生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
    

    相关文章

      网友评论

          本文标题:PYTHON协程

          本文链接:https://www.haomeiwen.com/subject/ftqdzftx.html