import time from concurrent.futures import ThreadPoolExecutor from queue import Queue from threading import Thread class TaskManage: # 考虑使用celery def __init__(self, task_process_works=5, task_method=print, max_task=None): self.task_process_works = task_process_works self.task_method = task_method self.q: Queue = Queue(max_task) if max_task else Queue() def task_func(self, params): return self.task_method(params) def add_task(self, params): self.q.put(params) def add_task_list(self, params_list): for params in params_list: self.q.put(params) def task_thread(self): with ThreadPoolExecutor(max_workers=self.task_process_works) as executor: while True: params = self.q.get() executor.submit(self.task_func, params) def start_task_thread(self): Thread(target=self.task_thread).start() def do_test(): class MyTask(TaskManage): def task_func(self, params): time.sleep(params['sleep']) print(params['text']) task_manage = MyTask() task_manage.start_task_thread() task_manage.add_task_list( [{'sleep': 1, 'text': 1}, {'sleep': 1, 'text': 2}, {'sleep': 1, 'text': 3}, {'sleep': 2, 'text': 222}]) while True: time.sleep(1)