如何等待线程池的指定线程结束,才执行主线程
时间: 2023-11-17 18:00:42 浏览: 77
可以使用线程池中的 `join()` 方法来等待指定线程结束,然后再执行主线程。
具体实现步骤如下:
1. 创建一个线程池,并向其中添加多个线程。
2. 调用线程池中每个线程的 `join()` 方法,等待指定线程结束。
3. 主线程在所有指定线程结束后再执行。
示例代码如下:
```python
import threading
from concurrent.futures import ThreadPoolExecutor
# 定义一个任务函数
def task(num):
print(f'Thread-{num} start')
# 模拟任务执行时间
time.sleep(2)
print(f'Thread-{num} end')
if __name__ == '__main__':
# 创建线程池
pool = ThreadPoolExecutor(max_workers=5)
# 添加任务到线程池
for i in range(5):
pool.submit(task, i)
# 等待指定线程结束
for i in [1, 3]:
for t in threading.enumerate():
if t.getName() == f'ThreadPoolExecutor-{i}_worker':
t.join()
# 所有指定线程结束后,主线程才执行
print('Main thread end')
```
上述代码中,创建了一个最大线程数为 5 的线程池,并向其中添加了 5 个任务。然后,通过循环遍历线程池中的线程,调用指定线程的 `join()` 方法等待其结束。最后,主线程在所有指定线程结束后再执行。
阅读全文