进程_线程 之(四) --- 信号量

眉间皱痕 提交于 2019-11-27 21:53:32

信号量

信号量:

  信号量就对线程最大并发数做限制,

  如果当前线程开启的个数超过了线程最大并发量,

  超出的线程要暂停执行,直到有线程执行完成,才加入新的线程

代码

 1 import threading
 2 from time import sleep
 3 
 4 # 定义一个信号量(线程的最大并发量)
 5 sem = threading.Semaphore(2) # 允许2个线程并发执行
 6 
 7 def func():
 8     with sem:  # 设置并发量。防止并发访问亮过载,影响服务器
 9         print("当前线程%s正在执行..."%threading.current_thread().name)
10         sleep(2)
11         print("当前线程%s执行结束"%threading.current_thread().name)
12 
13 if __name__ == '__main__':
14     for _ in range(5):     # 开启五个线程
15         t = threading.Thread(target=func)
16         t.start()

结果

 1 结果:
 2 """
 3   当前线程Thread-1正在执行...
 4   当前线程Thread-2正在执行...
 5   当前线程Thread-1执行结束
 6   当前线程Thread-2执行结束
 7   当前线程Thread-3正在执行...
 8   当前线程Thread-4正在执行...
 9   当前线程Thread-3执行结束
10   当前线程Thread-4执行结束
11   当前线程Thread-5正在执行...
12   当前线程Thread-5执行结束
13 """

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!