multiprocessing.pool 的 ThreadPool怎么用
时间: 2023-07-08 18:32:55 浏览: 231
ThreadPool线程池调用步骤
3星 · 编辑精心推荐
`multiprocessing.pool.ThreadPool` 是 Python 标准库中的线程池实现,可以通过它来方便地并发执行多个任务。下面是一个简单的示例代码:
```python
from multiprocessing.pool import ThreadPool
def task_func(arg1, arg2):
# 处理任务的函数
pass
# 创建线程池
pool = ThreadPool(10)
# 创建任务列表
tasks = []
for i in range(100):
task_args = (i, i+1) # 任务参数
task = pool.apply_async(task_func, args=task_args) # 创建任务
tasks.append(task)
# 等待所有任务执行完成
for task in tasks:
task.wait()
# 关闭线程池
pool.close()
pool.join()
```
以上代码中,首先创建一个 `ThreadPool` 对象,指定线程池中的线程数为 10。然后创建了一个包含 100 个任务的任务列表,每个任务都是通过 `pool.apply_async` 函数创建的。最后等待所有任务执行完成,关闭线程池。
在 `apply_async` 函数中,第一个参数是要执行的函数,第二个参数是函数参数的元组。它返回一个 `AsyncResult` 对象,可以调用 `wait` 方法等待该任务执行完成。
需要注意的是,由于 GIL 的存在,Python 中的线程并不能真正实现并行执行,只是实现了并发执行。如果需要实现真正的并行执行,可以考虑使用 `multiprocessing.Pool` 来创建进程池。
阅读全文