进程锁
from multiprocessing import Lock from multiprocessing import Process import json import time # def show_ticket(i): # with open('ticket') as f: # dic = json.load(f) # print('%d:余票%s'%(i,dic['ticket'])) def buy_ticket(i,lock): lock.acquire() with open('ticket') as f: dic = json.load(f) time.sleep(0.1) if dic['ticket'] > 0: dic['ticket'] -= 1 print('\033[32m%d买到票了\033[0m'%i) else: print('\033[31m%d没有买到票\033[0m'%i) time.sleep(0.1) with open('ticket','w') as f: json.dump(dic,f) lock.release() if __name__ == '__main__': # for i in range(1,11): # p = Process(target=show_ticket,args=(i,)) # p.start() lock = Lock() for i in range(1,11): p = Process(target=buy_ticket,args=(i,lock)) p.start()
import time import random from multiprocessing import Process from multiprocessing import Semaphore def ktv(i,sem): sem.acquire() #获取钥匙 print('%s走进ktv'%i) time.sleep(random.randint(1,5)) print('%s走出ktv'%i) sem.release() if __name__ == '__main__' : sem = Semaphore(4) for i in range(20): p = Process(target=ktv,args=(i,sem)) p.start()