zoukankan      html  css  js  c++  java
  • 协程

    1. 执行效率极高。因为子程序切换不是线程切换,而是由程序自身控制,因此没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。

    2. 不需要多线程的锁机制, 因为只有一个线程,不存在写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了。

    协程始终只是一个线程执行,那如何得用多核CPU呢? 最简单的办法就是多进程+协程, 可获得极高的性能、python对协程的支持是通过generator实现的。

    在生成器generator中, 可以通过for来迭代,也可以通过next()获取由yield语句返回的下一个值。

    在python中yield不但可以返回一个值,它还可以接收调用者发出的参数。

    yield实现肥波纳妾:

    def fb():
        a, b = 0, 1
        c = 0
        while True:
            yield c
            c = a + b
            a, b = b, c
    
    if __name__ == "__main__":
        tmp = fb()
        for i in range(0, 10):
            result = tmp.__next__()
            priint(result)

    生产者消费者模型:

    def consumer():
        r = ''
        while True:
            n = yield r
            if not n:
                return
            print('[CONSUMER] Consuming %s...' % n)
            r = '200 OK'
    
    def produce(c):
        c.send(None)
        n = 0
        while n < 5:
            n = n + 1
            print('[PRODUCER] Producing %s...' % n)
            r = c.send(n)
            print('[PRODUCER] Consumer return: %s' % r)
        c.close()
    
    c = consumer()
    produce(c)
  • 相关阅读:
    HDFS原理
    shell定时采集数据到HDFS
    HDFS的JavaAPI
    HDFS基本操作
    Kettle 数据抽取
    Matlab 实现对码功能
    医院就诊流程解析
    使用 Python 在 Caché 和 Sql Server 之间同步数据
    Matlab 日期频次统计
    使用 Python 连接 Caché 数据库
  • 原文地址:https://www.cnblogs.com/huangxm/p/5716831.html
Copyright © 2011-2022 走看看