大江东去,浪淘尽,千古风流人物。故垒西边,人道是,三国周郎赤壁。乱石穿空,惊涛拍岸,卷起千堆雪。江山如画,一时多少豪杰。遥想公瑾当年,小乔初嫁了,雄姿英发。羽扇纶巾,谈笑间,樯橹灰飞烟灭。故国神游,多情应笑我,早生华发。人生如梦,一尊还酹江月。

南鱼

果然,我没有抓住重点

导航

python协程 示例

协程

1.协程 又称微线程 是一种轻量级线程  携程有自己的寄存器 上下文 和栈 携程能保留上一次调用时的状态

2.协程优点和缺点 :

1.无需线程上下文切换的开销

2.无需原子操作锁定及同步的开销

3.高并发 高扩展性 低成本

缺点:

1.无法利用多核资源

2.阻塞操作会阻塞整个程序

  python利用 yield来达到携程效果,:先看下 关于yield的两个用法 ( yield from  是python3 的方法)

def aa():
    for i in 'ab':
        yield i
    for i2 in range(0, 3):
        yield i2
print list(aa())
》》》
['a', 'b', 0, 1, 2]


def bb():
    yield from 'ab'
    yield from range(3)
print (list(bb()))
》》》
['a', 'b', 0, 1, 2]

利用yield 来写一个经典的生产 消费者:

 

def consumer(name):# 消费者
    print("--->starting")
    while True:
        new_baozi = yield
        print("[%s] is eating baozi %s" % (name, new_baozi))


def producer():
    # r = con.__next__()
    r = con.send(None)  #启动生成器
    n = 0
    while n < 5:
        n += 1
        con.send(n)
    time.sleep(3)

if __name__ == '__main__':
    con = consumer("c1")
    p = producer()
"""
1.给con赋值为消费者生成器函数
2.给p赋值为生产者函数
3.进入生产者函数 启动消费者生成器函数
4.进入消费者函数 遇到yield函数停止
5.返回到生产者函数 进入while 循环 给消费者函数发送n的值
6.进入消费者函数 此时yield的返回值为n
"""
欢迎纠错

 

posted on 2019-10-13 22:22  南鱼羁荒渡  阅读(526)  评论(0编辑  收藏  举报