守護程序.、互斥鎖
阿新 • • 發佈:2020-09-17
1 from multiprocessing import Process 2 import time 3 def task(name): 4 print('%s 美女正在活著' % name) 5 time.sleep(3) 6 print('%s 美女正在活著' % name) 7 if __name__ == "__main__" 8 p = Process(target = task, args = ('Nami',)) 9 p.daemon = True 10 p.start() 11 print('jack壽終正寢守護程序')
1 from multiprocessing import Process, Lock 2 import json 3 import time 4 import random 5 6 7 #查票 8 def search(i): 9 #檔案操作讀取票數 10 with open('data','r',encoding='utf8') as f: 11 dic = json.load(f) 12 #模擬網路延遲 13 time.sleep(random.randint(1,3))互斥鎖14 #判斷當前是否有票 15 if dic.get('ticket_num') > 0: 16 #修改資料庫 買票 17 dic['ticket_num'] -= 1 18 #寫入資料庫 19 with open('data','w',encoding='utf8') as f: 20 json.dump(dic,f) 21 print('使用者%s買票成功' % i) 22 else: 23 print('使用者%s買票失敗' % i) 24 25 #整合上面兩個函式 26 def run(i, mutex): 27 search(i) 28 #給買票環節加鎖處理 29 #搶鎖 30 mutex.acquire() 31 32 buy(i) 33 #釋放鎖 34 mutex.release() 35 if __name__ == '__main__': 36 #在主程序生成一把鎖 讓所有的子程序 誰先搶到票誰先買 37 mutex = Lock() 38 for i in range(1,11): 39 p = Process(target=run, args=(i,mutex)) 40 p.start() 41