协程
生产器. yield
协程: 相当于 可被中断执行的函数. 可以中断地去执行不同的任务. 只是一个线程.
"""
generator 解释.
send为生成器的一种方法, 参数指定了上一次yield语句挂起时的返回值, 所以yield应该先挂起再调用send即先使用next().
当然也可以send(None), 这样就不用先使用next(), 毕竟send指定的返回值为none.
"""
def consumer():
r = ''
while True:
n = yield r
print(n)
if not n:
return
print("Consumer {}....".format(n))
r = "OK"
def producer(c):
c.send(None) # 启动生成器, 运行到yield. 这里也可以使用next()来启动生产器, 但是逻辑问题需要我们返回None给n.
n = 0
while n < 5:
n += 1
r = c.send(n) # 运行到yield, 发送过去的是返回值
print("Consumer return {}".format(r))
c.close() # close为生成器的一种方法. 关闭generator.
c = consumer() # 将generator传给c 不是调用.
producer(c)
本文深入探讨了Python中协程的概念,通过实例解析了生成器(generator)的工作原理,包括yield关键字的用法,以及如何使用send方法与生成器进行交互。文章还介绍了如何创建和控制消费者与生产者模式下的协程。
617

被折叠的 条评论
为什么被折叠?



