zoukankan      html  css  js  c++  java
  • python——协程(又称微线程,纤程)

    #协程(又称微线程,纤程)
    #协程,与线程的抢占式调度不同,它是协作式调度。协程也是单线程,但是它能让原来要使用异步+回调方式写的非人类代码,可以用看似同步的方式写出来。
    #当程序执行到produce的yield i时,返回了一个generator并暂停执行,当我们在custom中调用p.next(),程序又返回到produce的yield i 继续执行,这样 l 中又append了元素,然后我们print l.pop(),直到p.next()引发了StopIteration异常。
    import time
    import sys
    # 生产者
    def produce(l):
        i=0
        while 1:
            if i < 10:
                l.append(i)
                yield i
                i=i+1
                time.sleep(1)
            else:
                return
    # 消费者
    def consume(l):
        p = produce(l)
        while 1:
            try:
                next(p)   #在python3.x版本中,python2.x的g.next()函数已经更名为g.__next__(),使用next(g)也能达到相同效果。
                while len(l) > 0:
                    print (l.pop())
            except StopIteration:
                sys.exit(0)
    if __name__ == "__main__":
        l = []
        consume(l)
  • 相关阅读:
    Git
    Git
    Git
    Git
    Docker
    Linux
    Linux
    Python
    Python
    SQL
  • 原文地址:https://www.cnblogs.com/mentiantian/p/10407421.html
Copyright © 2011-2022 走看看