import threading
from concurrent.futures import ThreadPoolExecutor, Future
from typing import Callable, Any, Optional
class ThreadManager:
_instance = None
_lock = threading.Lock()
def __new__(cls):
if cls._instance is None:
with cls._lock:
if cls._instance is None:
cls._instance = super(ThreadManager, cls).__new__(cls)
cls._instance.executor = ThreadPoolExecutor()
return cls._instance
def submit_task(self, func: Callable, *args, **kwargs) -> Future:
"""
提交任务到线程池。
:param func: 要执行的函数
:param args: 函数的位置参数
:param kwargs: 函数的关键字参数
:return: 返回一个Future对象,可以用来获取任务结果
"""
return self.executor.submit(func, *args, **kwargs)
def shutdown(self, wait: bool = True):
"""
关闭线程池,释放资源。
:param wait: 是否等待正在执行的任务完成
"""
self.executor.shutdown(wait)
# 示例使用
def task_to_run(x):
return x * x
# 获取单例实例
manager = ThreadManager()
# 提交任务
future = manager.submit_task(task_to_run, 10)
# 获取任务结果
print("Task result:", future.result())
# 关闭线程池
manager.shutdown()
05-26
377
04-05
1003
02-26
3213