协程

作者: 无神 | 来源:发表于2017-11-20 23:00 被阅读5次

    协程,又名微线程,纤程。
    子程序(函数),在所有语言中都是层级调用的。
    子程序调用是通过栈实现的,一个线程就是执行一个子程序。
    子程序调用一个入口,一次返回,调用顺序是明确的。
    协程也是子程序,但是它的调用和子程序不同。协程在执行过程中可以中断,转而执行别的子程序,在适当的时候在返回接着执行。

    协程的优点:
    1、协程的执行效率极高。多线程执行时,线程之间需要切换,而协程不要切换,是在一个线程中执行。
    2、为了保证数据的安全性,防止同时读写变量冲突,多线程之间需要加锁;而协程中控制资源共享不需要加锁,判断状态即可,所以协程的效率比多线程高。

    协程和多进程各有其优点,在程序开发中,为了发挥多核CPU的优势,我们通常采用 多进程+ 协程的开发模式。
    在充分利用多核的情况下,又充分发挥协程的高效率,使程序的性能达到最优。

    #使用协程实现经典的生产者-消费者模型
    
    def consumer():
        res = ''
        while True:
            n = yield res
            if not n:
                return
            print('[CONSUMER] consuming %s.....' % n)
            res = '200 ok'
    
    def produce(c):
        c.send(None)
        n = 0
        while n < 5:
            n = n + 1
            print('[PRODUCE] produceing %s.....' % n)
            r = c.send(n)
            print('[CONSUMER] consumer return %s.....' % r)
        c.close()
    
    c = consumer()
    produce(c)
    
    

    相关文章

      网友评论

          本文标题:协程

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