我正在运行一段python代码,其中多个线程通过threadpool executor运行。每个线程都应该执行一项任务(例如获取网页)。我希望能够终止所有线程,即使其中一个线程失败。例如:
with ThreadPoolExecutor(self._num_threads) as executor:
jobs = []
for path in paths:
kw = {"path": path}
jobs.append(executor.submit(start,**kw))
for job in futures.as_completed(jobs):
result = job.result()
print(result)
def start(*args,**kwargs):
#fetch the page
if(success):
return True
else:
#Signal all threads to stop
有可能吗?除非所有线程都成功,否则线程返回的结果对我来说是无用的,因此,如果其中一个线程失败,我希望节省其余线程的一些执行时间,并立即终止它们。实际的代码显然在执行相对较长的任务,但有几个失败点
我会这样做:
如果任何结果不属实,一切都将立即关闭
如果您已经完成了线程的工作,并且希望研究进程,那么这里的代码和平看起来非常有希望和简单,几乎与线程的语法相同,但是使用了多处理模块
当超时标志过期时,进程终止,非常方便
我已经为我的一个类似问题创建了一个答案,我认为这将对这个问题有效
相关问题 更多 >
编程相关推荐