一、 信号量
1、信号量:用来控制线程并发数的。多线程同时运行,能提高程序的运行效率,但是并非线程越多越好,而semaphore信号量可以通过内置计数器来控制同时运行线程的数量,启动线程(消耗信号量)内置计数器会自动减一,线程结束(释放信号量)内置计数器会自动加一;内置计数器为零,启动线程会堵塞,直至本线程结束或者其他线程结束为为止。
2、相关函数:
acquire():消耗信号量;
release():释放信号量;
3、例子
# -*- coding: UTF-8 -*-
# coding:utf-8
import threading
import time
def run(n):
semaphore.acquire() # 计数器获取锁
time.sleep(5) # 程序休眠5秒
print (n)
semaphore.release() # 计数器释放锁
if __name__ == '__main__':
# 添加一个计数器,最大并发线程数量5(最多同时运行5个线程)
semaphore = threading.Semaphore(5)
for i</