【发布时间】:2018-11-01 14:36:11
【问题描述】:
我正在从 David Beazley 的精彩演讲中学习协程。Coroutine
我对一个简单的任务示例感到非常困惑,其中生成器开始运行而没有进行next()
class Task(object):
taskid = 0
def __init__(self, target):
Task.taskid += 1
self.tid = Task.taskid #Task id
self.target = target #Target coroutine
self.sendval = None #value to send
def run(self):
return self.target.send(self.sendval)
# a very simple generator
def foo():
print('Part 1')
yield
print("Part 2")
yield
它没有 next() 开始
In [8]: t1 = Task(foo())
In [9]: t1.run()
Part 1
至于 foo
In [10]: f1 = foo()
In [11]: f1.send(1)
TypeError: can't send non-None value to a just-started generator
应提前以next()开头。
我怎么能理解这种情况?
【问题讨论】:
标签: python python-3.x coroutine