python线程池如何实现
时间: 2023-10-02 09:10:20 浏览: 93
Python线程池可以通过使用标准库中的`concurrent.futures`模块来实现。该模块提供了`ThreadPoolExecutor`类,它是一个线程池,可用于并发地执行一组任务。
下面是一个简单的示例,演示如何使用`ThreadPoolExecutor`类:
```python
import concurrent.futures
import time
def worker(num):
print(f"Worker {num} started")
time.sleep(2)
print(f"Worker {num} finished")
if __name__ == "__main__":
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
for i in range(5):
executor.submit(worker, i+1)
```
在这个例子中,我们定义了一个`worker`函数,它会休眠2秒钟,然后打印出一个消息。我们使用`ThreadPoolExecutor`创建了一个线程池,并限制了最大工作线程数为3。然后我们循环5次,每次提交一个任务给线程池,该任务是调用`worker`函数,并传递一个整数参数。
`executor.submit`方法将任务提交给线程池,并返回一个`Future`对象,该对象表示任务的结果。在这个例子中,我们没有使用`Future`对象,因为我们不需要获取每个任务的结果。如果需要获取结果,可以使用`Future.result`方法。
当运行上面的代码时,我们应该看到类似以下的输出:
```
Worker 1 started
Worker 2 started
Worker 3 started
Worker 1 finished
Worker 4 started
Worker 2 finished
Worker 5 started
Worker 3 finished
Worker 4 finished
Worker 5 finished
```
可以看到,线程池最多同时运行3个工作线程,因此我们看到了一些工作线程先于其他工作线程完成。
阅读全文