模拟抢票系统

时间:2022-12-29 17:19:46
from multiprocessing import Process,Lock
import json,time,random,os
def piao(mutex):
mutex.acquire() #作用:按顺序购票,不会插队
dic = json.load(open('db.txt')) #读取,查看车票总数
if dic['count'] > 0:
dic['count'] -=1
time.sleep(random.randint(1,3)) #每个人的购票时间都不同
json.dump(dic,open('db.txt','w')) #购买之后重新写入数据
print('【%s 购票成功,剩余票数%s】'%(os.getpid(),dic['count']))
mutex.release() # 结束的时候必须开锁,否则别人进不来
if __name__ == '__main__': #Windows系统默认用这个
mutex = Lock()
for i in range(14): #14个人购票
p = Process(target=piao,args=(mutex,))
p.start()