互斥锁理论
'''
多个线程同时要修改同一份数据,类似抢票等,
都需要用到互斥锁 虽然影响效率,但保证数据安全
'''
import json
from multiprocessing import Process
import time
import os
import random
# 查票
def search(i):
# 读取票数
with open('火车票','r',encoding='utf8')as f:
dic = json.load(f)
print(f'用户查询票数:{dic.get("ticket_num")}')
# 买票 1,先查 2,再买
def buy(i):
with open('火车票','r',encoding='utf8')as f:
dic = json.load(f)
time.sleep(random.randint(1,3))
# 判断当前是否有票
if dic.get('ticket_num') > 0:
dic['ticket_num'] -= 1
with open('火车票','w',encoding='utf8')as f:
json.dump(dic,f)
print(f'用户:{i}购票成功')
else:
print(f'用户:{i}购票失败')
# 整合功能函数
def run(i):
search(i)
buy(i)
if __name__ == '__main__':
for i in range(1,10):
p = Process(target=run,args=(i,))
p.start()
'''
多个进程 操作同一份数据的时候,会出现数据错乱的问题
针对上述问题,解决方式就是加锁处理
加锁可以将并发编程串行,牺牲了效率,保证了数据安全
互斥锁
'''
标签:__,encoding,dic,互斥,json,import
From: https://www.cnblogs.com/moongodnnn/p/16906820.html