下面是我的测试床
from twisted.internet import defer, task
@defer.inlineCallbacks
def foo():
yield
print 'after yield in foo'
@defer.inlineCallbacks
def main(reactor):
d = foo()
yield
print 'after yield in main'
yield d
task.react(main)
[我期望yield
语句将使函数“屈服执行上下文”(无论在Twisted中是什么意思),然后让另一个推迟执行该函数。对于该特定示例,我希望main()
开始执行,将调用foo()
(用inlineCallbacks
换行)转换为deferred,然后产生使foo()
最终开始的执行。然后foo()
也会产生执行,因此最终打印行的顺序应为
after yield in main
after yield in foo
由于某种原因输出的是
after yield in foo
after yield in main
在Twisted中实现协作式多任务处理并让执行上下文转到另一个延迟的正确方法是什么?
[我期望yield语句将使函数“屈服执行上下文”(无论在Twisted中是什么意思,然后让另一个推迟执行的函数。