线程 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()
上一篇:线程池基本内容(1)


下一篇:【JAVA】ThreadPoolExecutor参数