说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
threading.enumerate() 是 Python threading 模块中的一个函数,用于返回当前活动的所有线程对象的列表。这个函数在多线程编程中非常有用,尤其是在需要管理和监控多个线程时。
返回当前所有存活的 Thread 对象的列表。 该列表包括守护线程以及 current_thread() 创建的空线程。 它不包括已终结的和尚未开始的线程。 但是,主线程将总是结果的一部分,即使是在已终结的时候。
使用场景:
简单使用示例:
import threading
import time
def worker(name):
print(f"Worker {name} is running")
time.sleep(2)
print(f"Worker {name} is done")
# 创建几个线程
threads = [
threading.Thread(target=worker, args=(f"Thread-{i}",))
for i in range(3)
]
# 启动线程
for thread in threads:
thread.start()
# 使用 enumerate() 列出所有活动线程
print("Active threads:")
for thread in threading.enumerate():
print(f"- {thread.name} (ID: {thread.ident})")
# 等待所有线程结束
for thread in threads:
thread.join()
假设我们正在开发一个多线程处理图像的程序,每个线程负责处理一张图像。我们可以使用 threading.enumerate() 来检查所有图像的处理线程是否都已完成。
import threading
import time
def process_image(image_path):
print(f"开始处理图像: {image_path}")
time.sleep(2)
print(f"图像 {image_path} 处理完成")
image_paths = ["image1.jpg", "image2.jpg", "image3.jpg"]
threads = []
for image_path in image_paths:
thread = threading.Thread(target=process_image, args=(image_path,))
thread.start()
threads.append(thread)
# 不断检查是否所有线程都已完成
while threading.enumerate() != [threading.main_thread()]:
print("仍有线程在运行,等待...")
time.sleep(1)
print("所有图像处理线程都已完成")
在上述案例中,程序会不断检查运行中的线程,直到所有处理图像的线程都结束。
更新时间:June 30, 2024, 3:39 p.m. 标签:python threading 多线程 线程