本文主要是介绍线程 5.线程池,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
线程池
concurrent.futures
该模块提供了用于异步执行可调用对象的高级接口
异步可以通过线程执行,使用ThreadPoolExecutor,也可以通过单独的进程执行,使用ProcessPoolExecutor,两者都实现了相同的接口
该接口由抽象Executor类定义
ThreadPoolExecutor(max_workers=n,thread_name=name,args=())
功能:创建线程池对象
参数:
max_workers:最大thread数量
thread_name:thread名称,可选
args:参数tuple,可选
返回值:线程池对象
Pool_obj.submit(func,[args=()/kwargs={}])
功能:线程池中的线程以异步方式执行任务
参数:
func:进程执行的方法
args/kwargs:参数列表
Pool_obj.shutdown(wait=True)
功能:执行器释放正在使用的任何资源
参数:
wait:无论wait是什么值,在所有等待执行的子线程执行完毕前,整个程序都不会退出
True:所有等待执行的线程都执行完毕,并且与执行器关联的资源都已释放后,才会返回
False:立即返回,当所有待等执行的线程都完成执行后,与执行器关联的资源将被释放
import time
import threading
from concurrent.futures import ThreadPoolExecutor
def work(n):
print(f'work-----{n}',threading.current_thread())
time.sleep(1)
print(f'work finish {n}',threading.current_thread())
nlist = ['messi','suaraz','neymar','xavi','iniesta']
if __name__ == '__main__':
# 创建线程池
pool = ThreadPoolExecutor(3)
for i in nlist:
# 异步执行
pool.submit(work,i)
# 关闭线程池
pool.shutdown()
这篇关于线程 5.线程池的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!