首页 > 编程语言 > 详细

[小技巧]python多线程编程利用信号量限制线程最大启动数量

时间:2020-02-23 09:13:35      阅读:80      评论:0      收藏:0      [点我收藏+]
 1 import threading
 2 import time
 3 
 4 
 5 class MyThread(threading.Thread):
 6     semaphore_run = threading.Semaphore(100)  # 最多同时运行100个线程
 7 
 8     def start(self):  # 重载start方法
 9         MyThread.semaphore_run.acquire()  # 启动之前先取得信号量
10         try:
11             super().start()
12         except:
13             MyThread.semaphore_run.release()  # 线程启动失败时释放信号量
14 
15     def run(self):  # threading模块没有提供线程的善后处理,于是新定义_run函数执行线程任务,并在run中善后
16         try:
17             self._run()
18         finally:  # 在线程任务完成后或异常退出时释放信号量
19             MyThread.semaphore_run.release()
20 
21     def _run(self):  # 真正执行的线程任务
22         time.sleep(3)  # 假装做些什么
23 
24 
25 if __name__ == __main__:  # 测试
26     while True:
27         task = MyThread()
28         task.start()
29         print(task)

 

[小技巧]python多线程编程利用信号量限制线程最大启动数量

原文:https://www.cnblogs.com/qyxfzmbz/p/12348276.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!