1. 程式人生 > 實用技巧 >守護程序.、互斥鎖

守護程序.、互斥鎖

 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
互斥鎖