我需要同时调用两个不同的方法以节省时间并使用从这些方法获得的结果我需要调用另一个方法,所以我遇到了 twisted.internet.threads 中的 deferToThread 方法,它返回一个延迟对象,以便我可以附加回调方法。
这是我的代码
for key,val in result.items():
d=threads.deferToThread(myMethod1,key,val)
d1=threads.deferToThread(myMethod2,key)
d.addCallback(myMethod3)
d1.addCallback(myMethod4)
reactor.run()
在给定的代码中,结果是一个字典。myMethod1 和 myMethod2,这是我需要异步运行的两种方法。
根据我的理解, deferToThread 将为字典中的每个项目创建一个单独的线程来执行给定的方法,因此每次循环迭代时,它都会创建两个不同的线程。没关系。但我需要在修复间隔后连续运行此代码。我尝试在修复间隔后运行它,但在执行 16 到 17 次后,一切都停止工作。这是否意味着很多线程在后台运行?如果有很多线程正在运行,那么如何停止或如何杀死这些线程?