import threading
import time
# 信号量 通常用于保护数量有限的资源.例如数据库服务器
# 在资源数量固定的任何情况下,都应该使用有界信号量。在生成任何工作线程前,应该在主线程中初始化信号量
# 互斥锁同时只允许一个线程操作数据,而 信号量 同时允许指定数量的线程操作数据
def demo_semaphore(num, semaphore):
semaphore.acquire()
print("now the threading is {}, {}".format(num, str(time.time())))
time.sleep(3)
semaphore.release()
if __name__ == '__main__':
max = 2
t_list = []
sem = threading.BoundedSemaphore(value=max) # 设置最大信号量(最多可以同时处理数据的线程)
for i in range(10):
t = threading.Thread(target=demo_semaphore, args=(i, sem))
t.start()
t_list.append(t)
for t in t_list:
t.join()
Python threading 信号量BoundedSemaphore
最新推荐文章于 2022-02-15 15:34:31 发布