说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
threading.active_count()
函数用于返回当前活动线程的数量,包括主线程和所有已启动但尚未终止的线程。这个数量等同于 threading.enumerate()
函数返回的列表的长度。这有助于监控线程的数量和管理线程的生命周期。
具体解释:
返回当前存活的 Thread 对象的数量。 返回值与 enumerate() 所返回的列表长度一致。函数 activeCount 是此函数的已弃用别名。
以下是一个简单示例,说明如何使用 threading.active_count()
:
import threading
import time
def worker():
time.sleep(1)
print("Worker finished")
threads = []
for i in range(5):
thread = threading.Thread(target=worker)
threads.append(thread)
thread.start()
print(f"Active threads: {threading.active_count()}")
for thread in threads:
thread.join()
print(f"Final active threads: {threading.active_count()}")
代码说明:
示例代码:并发限制器
import threading
import time
class ConcurrencyLimiter:
def __init__(self, max_threads):
self.max_threads = max_threads
self.semaphore = threading.Semaphore(max_threads)
def run(self, func, *args, **kwargs):
with self.semaphore:
while threading.active_count() > self.max_threads:
time.sleep(0.1)
thread = threading.Thread(target=func, args=args, kwargs=kwargs)
thread.start()
return thread
def worker(id):
print(f"Worker {id} started. Active threads: {threading.active_count()}")
time.sleep(2)
print(f"Worker {id} finished. Active threads: {threading.active_count()}")
limiter = ConcurrencyLimiter(max_threads=3)
for i in range(10):
limiter.run(worker, i)
print("All tasks submitted.")
这个例子展示了如何使用 threading.active_count() 来实现一个简单的并发限制器。它确保同时运行的线程数不超过指定的最大值,从而控制资源使用并防止系统过载。
以下是一些可能使用它的场景:
更新时间:2024-06-30 15:07:23 标签:python threading 多线程 数量