请兼容threading库
时间: 2023-08-18 12:06:22 浏览: 99
好的,如果需要兼容 `threading` 库,可以使用 `ThreadPool` 类来创建线程池对象,该类是对 `threading` 库的封装,使用方式与 `ThreadPoolExecutor` 类类似。
下面是改进后的代码:
```python
import threading
from queue import Queue
from tqdm import tqdm
class ThreadPool:
def __init__(self, max_workers):
self.max_workers = max_workers
self.task_queue = Queue()
self.threads = []
def worker(self):
while True:
thread = self.task_queue.get()
thread.start()
thread.join()
self.task_queue.task_done()
def submit(self, thread):
self.task_queue.put(thread)
def start(self):
for i in range(self.max_workers):
thread = threading.Thread(target=self.worker)
thread.start()
self.threads.append(thread)
self.task_queue.join()
thread_list = [...] # 线程列表
thread_max = ... # 最大线程数
pool = ThreadPool(thread_max)
for thread in thread_list:
pool.submit(thread)
pool.start()
```
其中,`ThreadPool` 类的 `worker()` 方法是线程池的工作函数,`submit()` 方法用于将任务添加到任务队列中,`start()` 方法用于启动线程池。
需要注意的是,`ThreadPool` 类的 `worker()` 方法中使用了 `thread.join()`,这意味着线程池中的线程都是串行执行的,如果需要并行执行,可以将 `thread.join()` 注释掉。
阅读全文