线程池实例
时间: 2023-06-28 19:16:00 浏览: 91
threadpool.rar
好的,这里给您提供一个线程池的示例代码:
```python
import threading
import queue
class ThreadPool:
def __init__(self, num_threads):
self.num_threads = num_threads
self.tasks = queue.Queue()
self.threads = []
def add_task(self, func, *args, **kwargs):
self.tasks.put((func, args, kwargs))
def start(self):
for i in range(self.num_threads):
thread = threading.Thread(target=self.worker)
thread.start()
self.threads.append(thread)
def worker(self):
while True:
func, args, kwargs = self.tasks.get()
try:
func(*args, **kwargs)
except Exception as e:
print(e)
finally:
self.tasks.task_done()
def join(self):
self.tasks.join()
for thread in self.threads:
thread.join()
```
这个线程池的实现基于 Python 的 threading 模块和 queue 模块,可以通过 add_task() 方法向线程池中添加任务,然后通过 start() 方法启动线程池中的线程,最后通过 join() 方法等待所有任务完成。在实际使用中,可以通过继承 ThreadPool 类来实现自定义的线程池,同时也可以根据需要修改线程池的参数和实现方式。
阅读全文