Python 2.7 在执行过程中停止扭曲的光纤

Python 2.7 在执行过程中停止扭曲的光纤,python-2.7,twisted,fiber,Python 2.7,Twisted,Fiber,有许多方法可以创建Python扭曲光纤。例如,可以调用reactor.callWhenRunning(helloWorld)helloWorld(),光纤将停止执行 如果在执行helloWorld()的中途,我想停止光纤的执行,而不影响其余光纤,那会怎么样?我该怎么做 如果执行在helloWorld()本身内部,那么我可以简单地从该方法返回。但是,如果程序有10个嵌套调用深度呢?如何阻止光纤继续执行?我想我可以让所有10个方法立即返回,但是对于一个包含1000个方法的大型程序来说,这是非常困难的

有许多方法可以创建Python扭曲光纤。例如,可以调用
reactor.callWhenRunning(helloWorld)
<当
helloWorld()
返回时,将执行code>helloWorld(),光纤将停止执行

如果在执行
helloWorld()
的中途,我想停止光纤的执行,而不影响其余光纤,那会怎么样?我该怎么做

如果执行在
helloWorld()
本身内部,那么我可以简单地从该方法返回。但是,如果程序有10个嵌套调用深度呢?如何阻止光纤继续执行?我想我可以让所有10个方法立即返回,但是对于一个包含1000个方法的大型程序来说,这是非常困难的

我可以提出一个例外。除非调用堆栈中的某个方法(除了reactor之外)捕获到异常,否则这将起作用

我可以做到以下几点。然而,这将增加许多待处理的
延迟的
堆在扭曲的反应器中

while True:
    d       = defer.Deferred()
    d.delay = reactor.callLater(sys.maxint, d.callback, None)

    yield d
还有其他解决办法吗


注意:Python2.6解决方案是理想的。

解决方案是只需在延迟之前调用
yield
ing上的
cancel()
。在
产生
后,代码不会继续执行

d       = defer.Deferred()
d.delay = reactor.callLater(sleepTime, d.callback, None)

d.cancel()

yield d
returnValue(None)

不管它值多少钱,在Twisted中没有“纤维”这样的东西。光纤是Windows的一个协作线程库,Twisted的工作方式与之不同。我不确定Twisted的工作方式是什么。这就是我在引号中加上fiber的原因。然而,阅读后,似乎纤维是正确的词。如果你有更好的词,请分享。