Python 干货集合

一个十分简短的线程池应用代码

主要负责:根据线程函数参数列表,无序批量地完成一系列任务,阻塞等待完成,返回结果列表

from concurrent.futures import ThreadPoolExecutor, wait
from queue import Queue

global_store = Queue()

def save_result(res):
    global global_store

    global_store.put(res)


def exec_func_wrapper(exec_func, args):
    """执行任务包装,为了保存结果

    Args:
        exec_func (_type_): 执行函数
        args (_type_): 需要的参数
    """

    res = exec_func(*args)
    save_result(res)


def multi_task(exec_func, args_list, max_thread = 5):
    """执行多个任务,任务数量由参数列表指定

    Args:
        exec_func (func): 执行任务的函数
        args_list (list): 传递给函数的参数列表
        max_thread (int): 最大线程数
    """

    pool = ThreadPoolExecutor(max_workers=max_thread)

    futures = []
    for args in args_list:
        future = pool.submit(exec_func_wrapper, exec_func, args)
        futures.append(future)
    

    wait(futures) # 等待所有任务结束

    # 关闭线程池
    pool.shutdown()

    # 从队列中获取保存的任务数据
    task_results = []
    while not global_store.empty():
        result = global_store.get()
        task_results.append(result)
        global_store.task_done()
    
    return task_results

.vscode/python.code-snippets

"HEADER":{
		"prefix": "header",
		"body": [
            "# -*- coding: utf-8 -*-", 
            "'''",
            "@File    :   $TM_FILENAME",
            "@Time    :   $CURRENT_YEAR/$CURRENT_MONTH/$CURRENT_DATE $CURRENT_HOUR:$CURRENT_MINUTE:$CURRENT_SECOND",
            "@Author  :   xxxx",
            "@Version :   1.0",
            "@Desc    :   $1",
            
            "'''",
            "$0"
        ],
	},

你可能感兴趣的:(python,windows,开发语言)