强制结束多线程
多线程并发执行可以极大地缩减代码运行时间,但有些时候我们想要程序可以在不满足限制条件时,正常并发执行;在满足限制条件后,强制结束多线程,不让其再空耗资源。
举几个例子:我们想要程序可以并发执行操作,但只并发执行50个操作就好了,之后即使还有其他操作也不再执行;或者我们想要得到几千个并发操作中返回值的最大值,但已知返回值取值范围为0到100,所以当我们发现已有返回值为100时,其他所有正在执行的程序和未执行的等待程序都没有了意义,可以强制结束多线程任务,以免空耗资源。
方案一(满足条件即可强制结束多线程但无法处理返回值)
代码思路如下:
from concurrent.futures import as_completed, ProcessPoolExecutor, wait, ALL_COMPLETED, FIRST_EXCEPTION
from concurrent.futures.thread import ThreadPoolExecutor
import random
import threading
import time
import queue
import concurrent
def rand_sleep(i,exec_queue):
if not exec_queue.empty():
return -1
try:
if i == 5:
print("先返回的数据已经满足条件 则 剩下的线程结果 不再处理。。。")
raise Exception("The number is 5.")
time.sleep(i)
print(i)
return i
except Exception as

文章介绍了两种方法来在满足特定条件时强制结束多线程任务,同时处理返回值。第一种方法允许提前终止但无法精确获取返回值;第二种方法既能结束任务又能获取最大返回值,通过控制并行函数的返回值和异常处理实现。
最低0.47元/天 解锁文章
678

被折叠的 条评论
为什么被折叠?



