【python随笔】之【协程编号及协程实现生产者消费者模式】

编号

# 利用协程编号
def go():
    data = ''
    # send一次,循环一次
    for i in range(10000000):
        r = yield data  # 获取发送的数据
        print(i, r)


if __name__ == '__main__':
    my = go()
    student_list = [None, '小明', '小红', '小张']  # 协程第一个参数必须传递空
    for student in student_list:
        my.send(student)
0 小明
1 小红
2 小张

生产者消费者

def maker(d):
    d.send(None)  # 启动消费者
    n = 0
    # 生产十个
    while n < 10:
        n += 1
        print('生产了', n)
        # 通知消费者,并获取返回值
        r = d.send(n)
        print('消费者返回的', r)
    d.close()


def deleter():
    # 协程
    r = None
    while True:
        n = yield r  # n是收到的数据,r是要返回的数据
        print('消费了', n)
        # r作为返回值
        r = 'OK' + str(n)


if __name__ == '__main__':
    deleter1 = deleter()
    maker(deleter1)
生产了 1
消费了 1
消费者返回的 OK1
生产了 2
消费了 2
消费者返回的 OK2
生产了 3
消费了 3
消费者返回的 OK3
生产了 4
消费了 4
消费者返回的 OK4
生产了 5
消费了 5
消费者返回的 OK5
生产了 6
消费了 6
消费者返回的 OK6
生产了 7
消费了 7
消费者返回的 OK7
生产了 8
消费了 8
消费者返回的 OK8
生产了 9
消费了 9
消费者返回的 OK9
生产了 10
消费了 10
消费者返回的 OK10
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值