Python之多线程编程6,线程池(ThreadPoolExecutor)
线程池是专门用来处理多线程的,当有多任务时,将任务提交至线程池,线程池可内部解决线程问题。
当线程数达到设定的最大值时,线程池内部会进行阻塞,等到其他线程完成后可再增加线程
线程池对象主要有三个方法
submit():将任务提交至线程池,线程池内部进行调度
result():返回某任务的返回值
done():判断某任务是否完成
函数库的导入
#导入函数库
import concurrent.futures import ThreadPoolExecutor
import time
定义方法
def fun(l):
time.sleep(1)
print(f"这是第{l}个方法")
return str(l)
定义主函数
if __name__ == "__main__":
#创建线程池对象
executor = ThreadPoolExecutor(max_workers=3)
#提交任务至线程池
task1 = executor.submit(fun,1)
task2 = executor.submit(fun,2)
#在任务未执行完成时 判断任务是否执行完成
print(task1.done())
print(task2.done())
#时间延长5秒
time.sleep(5)
#再次判断任务是否完成,结果为真
print(task1.done())
print(task2.done())
#返回方法执行的结果
print(task1.result())
print(task2.result())
运行结果:
总结:
线程池的执行顺序很重要,一定要牢记。submit的传参第一个为方法名,第二个为该方法对应的参数