写一个线程池,线程池中每个线程都有自己的阻塞队列
时间: 2023-06-04 13:02:11 浏览: 58
好的,我可以为您提供一个简单的线程池实现。以下是示例代码:
```python
import threading
import queue
class ThreadPool:
def __init__(self, num_threads):
self.tasks = queue.Queue()
self.threads = []
self.__create_threads(num_threads)
def __create_threads(self, num_threads):
for i in range(num_threads):
t = threading.Thread(target=self.__worker_thread)
self.threads.append(t)
t.start()
def __worker_thread(self):
while True:
task = self.tasks.get()
if task is None:
break
# execute the task
task()
def submit_task(self, task):
self.tasks.put(task)
def close(self):
for i in range(len(self.threads)):
self.tasks.put(None)
for t in self.threads:
t.join()
```
上述代码实现了一个基本的线程池,其中每个线程都有自己的阻塞队列来等待任务。您可以使用 submit_task 方法向线程池提交任务,当有线程可用时,任务将被执行。另外,您可以使用 close 方法关闭线程池,在所有任务执行完毕后,所有线程将退出。