线程池ThreadPool用法

import threadpool
def standard_mult_thread(objs, thread_fn):
    args_tp_lst = []
    for obj in objs:
        params = {'tsk_obj': obj}
        args_tp_lst.append((None, params))
    pool_size = len(args_tp_lst)
    if pool_size == 0:
        return
    pool = threadpool.ThreadPool(pool_size)
    requests = threadpool.makeRequests(thread_fn, args_list=args_tp_lst)
    [pool.putRequest(req) for req in requests]
    pool.wait()
    pool.dismissWorkers(pool_size, do_join=True)

线程池的作用是:
为所有任务创建线程,将素有线程放到线程池中,通过线程池管理线程

 

用法说明:
线程池的数量不能无限大,必须要有一个限制
一般而言,线程池中的线程数为cpu核数的2倍或者cpu核数的2倍加2
具体线程数需要根据实际测试得出。

用法细节:
线程函数 thread_fn 的参数名称必须要和 params 参数字典中的 key 位置对应且名称相同

 

posted @ 2020-07-16 12:47  bhz  阅读(666)  评论(0)    收藏  举报