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添加超时所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)