使用Semaphore信号量来动态控制并发任务的数量。
示例代码:
import threading
class TaskManager:
def __init__(self, max_concurrent_tasks):
self.max_concurrent_tasks = max_concurrent_tasks
self.semaphore = threading.Semaphore(max_concurrent_tasks)
def submit(self, task):
self.semaphore.acquire()
thread = threading.Thread(target=self._execute_task, args=(task,))
thread.start()
def _execute_task(self, task):
try:
task.run()
finally:
self.semaphore.release()
以上代码中,我们使用Semaphore来限制并发任务的数量,通过acquire()方法获取Semaphore的锁,限制了同时执行任务数量,当任务完成后,再通过release()方法释放锁,以便其他任务获取锁并执行。我们可以创建一个TaskManager来管理并发任务的提交和执行,通过提交任务到TaskManager中,TaskManager可自动控制并发任务的数量,这样就可以避免出现过多的并发任务导致系统崩溃。
上一篇:并发请求阈值已超限
下一篇:并发任务和每个任务的不同光标位置