python建立备用线程池
时间: 2023-06-28 09:13:07 浏览: 40
在 Python 中,可以使用 `concurrent.futures` 模块来创建线程池。具体的实现步骤如下:
1. 导入 `concurrent.futures` 模块。
```python
import concurrent.futures
```
2. 创建一个 `ThreadPoolExecutor` 对象,指定线程池大小。
```python
executor = concurrent.futures.ThreadPoolExecutor(max_workers=4)
```
这里指定的线程池大小为 4,也可以根据具体情况进行调整。
3. 使用 `submit` 方法提交需要执行的任务。
```python
future = executor.submit(task_function, arg1, arg2, ...)
```
这里的 `task_function` 是需要执行的任务函数,`arg1`、`arg2` 等是任务函数需要的参数。`submit` 方法会返回一个 `Future` 对象,可以使用它来获取任务的执行结果或者取消任务。
4. 使用 `as_completed` 方法获取已经完成的任务的结果。
```python
for future in concurrent.futures.as_completed(future_list):
result = future.result()
print(result)
```
这里的 `future_list` 是一个包含所有任务的 `Future` 对象的列表。`as_completed` 方法会在任务完成后返回已经完成的 `Future` 对象,我们可以使用 `result` 方法获取任务的执行结果。
完整的代码示例:
```python
import concurrent.futures
def task_function(arg1, arg2):
# 执行任务的代码
return result
executor = concurrent.futures.ThreadPoolExecutor(max_workers=4)
future_list = []
for i in range(10):
future = executor.submit(task_function, arg1, arg2)
future_list.append(future)
for future in concurrent.futures.as_completed(future_list):
result = future.result()
print(result)
```
这样就可以创建一个备用线程池了。需要注意的是,线程池中的任务不能阻塞,否则会影响线程池的执行效率。如果需要执行阻塞的任务,可以使用 `concurrent.futures.ProcessPoolExecutor` 创建进程池。