鎖:lock,多個程序中同一時間,只能排序執行程式。(一把鑰匙只能進入乙個,歸還鑰匙後面的拿鑰匙進入乙個,類推)
訊號:semaphore,多個程序中同一時間,同時被n個程序執行。
事件:event,通過乙個訊號控制多個程序,同時執行或阻塞。
1、程序鎖,比如搶票會有多個使用者一起搶。
沒有鎖程序的情況下:發現餘票只有一張,但每個程序都能搶到票了,實際也就只有一張改怎麼辦?
2、運用程序鎖:lock
這樣就可以解決類似這樣的問題。
from multiprocessing import process,lock
import time,json
def find():
with open(r'test.py')as f:
d = json.load(f)
print('剩餘免費門票:%s'%d['count'])
def buy(i,lock):
lock.acquire() # 拿鑰匙
with open(r'test.py')as f:
d = json.load(f)
if d['count']<=0:print('門票已被搶完~')
else:
print('恭喜使用者 %s 成功搶到門票了'%i)
if d['count']!=0:d['count']-=1
time.sleep(0.2)
with open(r'test.py','w')as f:
json.dump(d,f)
lock.release() # 還鑰匙
if __name__ == '__main__':
for i in range(1): # 5個程序同時查詢
1、訊號量-semaphore:比如乙個程式最多2個進入。
基本原理類似鎖中的執行,鎖是單個進入,在鎖的基礎上使用了乙個內建的計數器,從而達到多個同時進入。
可以任意設定同時最多進入多少個。
# 1、訊號量-semaphore:比如乙個程式最多2個進入
from multiprocessing import process,semaphore
import time
def func(i,sem):
sem.acquire()
print('使用者 %s 進入了'%i)
time.sleep(5)
print('使用者 %s 退出了'%i)
sem.release()
if __name__ == '__main__':
sem=semaphore(2) # 設定能執行n個同時執行
1、event:通過乙個訊號控制多個程序,同時執行或阻塞。
from multiprocessing import event
e=event()
e.is_set() # 建立乙個事件,預設為阻塞狀態:false
print('阻塞前~')
# e.set() # 將事件堵塞狀態設為:true
e.wait() # 如果is_set()的值為false,那麼進行堵塞,否則不堵塞
e.clear() # 將事件的堵塞狀態清空,即為預設狀態:false
print('阻塞後~~~')
將事件堵塞狀態設為:true
將事件堵塞狀態設為:false
2、事件例項:紅綠燈事件
from multiprocessing import process,event
import time
def func(e):
while 1:
if e.is_set():
e.clear()
print('紅燈停~~')
else:
e.set()
print('綠燈亮起~')
time.sleep(3)
def car(i,e):
if not e.is_set():
print('%s 等紅燈中==' % i)
e.wait()
print('%s 通行中-->' % i)
python 程序訊號量
1 概念 訊號量和鎖相似,鎖同一時間只允許乙個物件 程序 通過,訊號量同一時間允許多個物件 程序 通過 2 應用場景 多執行緒,並規定數量 3 格式 匯入訊號量模組 例項化訊號量物件,可以規定訊號量的個數 傳遞物件 拿到一把鑰匙 釋放一把鑰匙 4 過程 獲得鑰匙,當鑰匙串沒鑰匙時,其它程序要在外面等...
訊號量 事件 鎖 守護程序
什麼是程序?程序是計算機中最小的資源分配單位 程序與程序之間資料隔離,執行過程非同步 為什麼會出現程序的概念?合理利用cpu 提高使用者體驗 多個程序是可以同時利用多個cpu的,可以實現並行的效果 在主程序中控制子程序的方法?子程序物件 process target,args 在建立的這一刻根本就沒...
python訊號量 Python訊號量
python訊號量教程 訊號量是由作業系統管理的一種抽象資料型別,用於在多執行緒中同步對共享資源的使用。本質上說,訊號量是乙個內部資料,用於標明當前的共享資源可以有多少併發讀取。也可以簡單的理解為,訊號量是多把鎖,同時允許多個執行緒來更改資料,而 python訊號量與互斥鎖的關係 訊號量的乙個特殊用...