Twisted中的合作-产生执行上下文

问题描述 投票:0回答:1

下面是我的测试床

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中实现协作式多任务处理并让执行上下文转到另一个延迟的正确方法是什么?

python twisted
1个回答
0
投票

[我期望yield语句将使函数“屈服执行上下文”(无论在Twisted中是什么意思,然后让另一个推迟执行的函数。

© www.soinside.com 2019 - 2024. All rights reserved.