python-day33--互斥鎖
阿新 • • 發佈:2017-08-25
__name__ task 成功 opened sleep star c99 搶票 pid 鎖的意思就是:一個一個的執行
1 from multiprocessing import Process,Lock 2 import os 3 import time 4 def work(mutex): 5 mutex.acquire() 6 print(‘task[%s] 上廁所‘ %os.getpid()) 7 time.sleep(3) 8 print(‘task[%s] 上完廁所‘ %os.getpid()) 9 mutex.release() 10 11 if __name__ == ‘__main__‘: 12 mutex=Lock()互斥鎖13 p1=Process(target=work,args=(mutex,)) 14 p2=Process(target=work,args=(mutex,)) 15 p3=Process(target=work,args=(mutex,)) 16 p1.start() 17 p2.start() 18 p3.start() 19 20 print(‘主‘)
1 from multiprocessing import Process,Lock 2 import json 3 import time 4 import模擬搶票random 5 import os 6 def search(): 7 dic=json.load(open(‘a‘,)) 8 print(‘剩余票數%s‘ %dic[‘count‘]) 9 10 def get_ticket(): 11 dic=json.load(open(‘a‘,)) 12 if dic[‘count‘] > 0: 13 dic[‘count‘]-=1 14 json.dump(dic,open(‘a‘,‘w‘)) 15 print(‘%s 購票成功‘ %os.getpid())16 def task(mutex): 17 search() 18 time.sleep(random.randint(1, 3)) #模擬購票一系列繁瑣的過程所花費的時間 19 mutex.acquire() 20 get_ticket() 21 mutex.release() 22 if __name__ == ‘__main__‘: 23 mutex=Lock() 24 for i in range(50): 25 p=Process(target=task,args=(mutex,)) 26 p.start()
python-day33--互斥鎖