python – 如何为twisted defer添加超时

python – 如何为twisted defer添加超时,第1张

概述from twisted.internet import reactorfrom twisted.internet import threadsfrom twisted.internet import deferimport timedef worker(arg): print 'Hello world' time.sleep(10) return 1def
from twisted.internet import reactorfrom twisted.internet import threadsfrom twisted.internet import deferimport timedef worker(arg):    print 'Hello world'     time.sleep(10)    return 1def run():    print 'Starting workers'    l = []    for x in range(2):        l.append(threads.deferToThread(worker,x))    return defer.DeferredList(l)def res(results):    print results    reactor.stop()d = run()d.addCallback(res)reactor.run()

如何通过超时停止工人?

解决方法 除非与您合作,否则不能中断线程. time.sleep(10)不合作,所以我认为你不能打断这个工人.如果您有另一种具有多个离散阶段的工作者,或者在某些任务的循环中 *** 作,那么您可以执行以下 *** 作:
def worker(stop,jobs):    for j in jobs:        if stop:            break        j.do()stop = []d = deferToThread(worker)# This will make the List eval to true and break out of the loop.stop.append(None)

这也不是Twisted特定的.这就是线程在Python中的工作方式.

总结

以上是内存溢出为你收集整理的python – 如何为twisted defer添加超时全部内容,希望文章能够帮你解决python – 如何为twisted defer添加超时所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1207459.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存