有很多方法可以创建 Python Twisted 光纤。例如,可以调用reactor.callWhenRunning(helloWorld)
. helloWorld()
将执行,并且当helloWorld()
返回时 Fiber 将停止执行。
如果在执行的中途helloWorld()
我想停止纤程的执行而不影响其余纤程怎么办?我该怎么做?
如果执行在其内部helloWorld()
,那么我可以简单地从该方法返回。但是,如果程序有 10 个嵌套调用深度怎么办?我将如何阻止光纤继续执行?我想我可以让所有 10 种方法立即返回,但是对于具有 1000 多种方法的大型程序来说,这将是非常困难的。
我可以提出一个例外。除非调用堆栈中的某些方法(除了反应器)捕获异常,否则这将起作用。
我可以做以下事情。但是,这会在 Twisted reactor 中增加大量待处理Deferred
的 s 堆积。
while True:
d = defer.Deferred()
d.delay = reactor.callLater(sys.maxint, d.callback, None)
yield d
还有其他解决方案吗?
注意:Python 2.6 解决方案将是理想的。