信号量

信号量

  • 信号量和锁机制基本是类似的,都是为了让资源的分配和进程的调度更加的有序,但是和锁机制不同的是:锁机制一次只能获取一把钥匙,信号量一次可以获取多把钥匙,数量可以设定。
  • 基本的流程:
    • 导入模块:from multiprocessing import Semaphore
    • 实例化信号量对象:se = Semaphore(num),num一个锁是获取几把钥匙
    • 获取钥匙:se.acquire()
    • 归还钥匙,释放资源:se.release()
    • 计数器为0的时候就表示没有钥匙了,需要剩余的进程继续等待,如果不为0,则可以获得钥匙。
from multiprocessing import Process,Semaphore

se = Semaphore(5)
# 实例化信号量,得到五把钥匙
se.acquire()
print(1)
se.acquire()
print(2)
se.acquire()
print(3)
se.acquire()
print(4)
se.acquire()
print(5)
# se.release()
# # 开门,释放一个资源,归还一把钥匙
se.acquire()
print(6)

'''
结果是:
1
2
3
4
5
'''
# 由于只有五把钥匙,所以只能打印五个,第六个无法打印,但是如果前边有归还的,后边就可以继续运行。
posted @ 2020-03-08 14:04  大道至诚  阅读(131)  评论(0编辑  收藏  举报