Python3之互斥鎖

2021-08-07 09:48:38 字數 1042 閱讀 6472

由於併發狀態下,作業系統對多個程序進行排程,而多個程序可能都有操作硬體的需求,這時就會產生多個程序對資源的共享,而共享意味著競爭,會產生許多問題。這樣就需要一種機制或者手段去解決競爭,使競爭變得有序化,從而使共享資源按照預定的結果去獲取。這種手段就是加互斥鎖

import json

import os

from multiprocessing import process, lock

defcheck_ticket

(): dic = json.load(open('a.txt'))

print('剩餘票數:', dic['ticket'])

defdeal_ticket

(): dic = json.load(open('a.txt'))

if dic['ticket'] > 0:

dic['ticket'] -= 1

json.dump(dic, open('a.txt', 'w'))

print('%s購票成功' % os.getpid())

else:

print('%s購票失敗' % os.getpid())

defbuy_ticket

(mutex):

check_ticket()

# 獲取互斥鎖後,程序只能在釋放鎖後下個程序才能進來

mutex.acquire()

deal_ticket()

# 互斥鎖必須被釋放掉

mutex.release()

if __name__ == '__main__':

mutex = lock()

for i in range(10):

p = process(target=buy_ticket, args=(mutex,))

p.start()

加鎖釋放鎖主要通過以下**去實現:

mutex = lock()

mutex.acquire()

mutex.release()

python之互斥鎖

from threading import thread,lock import os,time 互斥鎖 def work global n lock.acquire 鎖住n,讓他依次執行 temp n print n time.sleep 0.1 n temp 1 print n lock.rel...

python3 死鎖 and 遞迴鎖

目錄 死鎖 兩個或兩個以上的程序或執行緒,在執行過程中,因搶奪資源而造成的相互無解等待的現象。遞迴鎖 在python中支援在同一執行緒中多次請求同一資源。rlock模組 遞迴鎖的實現模組,用來防止死鎖問題出現 死鎖程序 產生了死鎖現象的程序。例如 from threading import thre...

程序鎖(互斥鎖)(Python)

3 搶票示例 import json import time from multiprocessing import process,lock defsearch i with open ticket encoding utf 8 as f ticket json.load f print s 當前...