请给我ThreadPool的库的python代码
时间: 2024-03-16 18:47:53 浏览: 83
下面是一个简单的ThreadPool类的Python实现,您可以根据自己的需求进行修改和扩展:
```python
import threading
import queue
class ThreadPool:
def __init__(self, num_threads):
self.tasks = queue.Queue()
for i in range(num_threads):
Worker(self.tasks)
class Worker(threading.Thread):
def __init__(self, tasks):
threading.Thread.__init__(self)
self.tasks = tasks
self.daemon = True
self.start()
def run(self):
while True:
func, args, kwargs = self.tasks.get()
try:
func(*args, **kwargs)
except Exception as e:
print(e)
self.tasks.task_done()
def add_task(self, func, *args, **kwargs):
self.tasks.put((func, args, kwargs))
def wait_completion(self):
self.tasks.join()
```
使用示例:
```python
def print_numbers(start, end):
for i in range(start, end):
print(i)
pool = ThreadPool(4)
pool.add_task(print_numbers, 1, 10)
pool.add_task(print_numbers, 11, 20)
pool.wait_completion()
```
该示例创建了一个包含4个线程的线程池,并使用`add_task`方法将两个任务添加到任务队列中。每个任务都是一个打印数字的函数,分别打印1到10和11到20之间的数字。最后,`wait_completion`方法等待所有任务完成并阻塞主线程,直到队列为空。
阅读全文