直接定义然后通过
import threading
# 创建一个互斥锁
lock = threading.Lock()
# 多线程执行的部分
def worker(...):
...
# 这样就可以保证同一时间只会有一个线程在访问这个部分
with lock:
...
ThreadPoolExecutor 是 Python 的 concurrent.futures 库中的一个类,用于管理线程池,使并发编程更加方便。它提供了一个高层次的接口,允许你异步执行函数或方法,并可以限制同时执行的线程数量,以提高 CPU 利用率和资源管理。
from concurrent.futures import ThreadPoolExecutor
def worker(param1, param2, ...):
pass
results = []
# 创建一个 ThreadPoolExecutor,并限制并发线程的数量
max_threads = 5 # 你可以根据需要调整线程数量
with ThreadPoolExecutor(max_threads) as executor:
# 将任务提交给线程池
futures = []
for i in range(N):
input_param = ...
print("////////// START WORKING ON %d of %d" % (i+1, N)
future = executor.submit(worker, param1, param2, ...)
futures.append(future)
# 等待所有任务完成
for i, future in enumerate(futures):
print("////////// FINISHED WORKING ON %d of %d" % (i+1, N)
result = future.result()
results.append(result)
future.result()
将阻塞当前线程,直到任务完成并返回结果。