我正在学习协程,但它的工作方式很奇怪,我无法理解......这是源代码
@coroutine
def printer():
tmp=(yield)
print tmp
def sender(coru):
coru.send("hello")
print "I'm sender"
if __name__=="__main__":
coru=printer()
sender(coru)
print "I'm master"
节目
你好
StopItertationError @ coru.send("你好")
尽管,
@coroutine
def printer():
while 1:
tmp=(yield)
print tmp
def sender(coru):
coru.send("hello")
print "I'm sender"
if __name__=="__main__":
coru=printer()
sender(coru)
print "I'm master"
节目
你好
我是发件人
我是大师
正确。
所以我想知道
为什么协程总是使用循环以及为什么第一个示例会出现错误
我在 3.3 版中听说过“yield from”语法。这有助于使第一个工作正常吗?
我知道每个协程函数的工作方式与子程序不同。
但是,我认为,在Printer函数结束后,程序应该终止而不返回Sender。
但确实如此。不是说发件人优于打印机吗?那么子程序和协程有什么区别。
感谢您的阅读,如果您能启发我,我真的很感激:)