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