为了保证数据的安全性。
import json, time
from multiprocessing import Process,Lock
def show():
with open(r'E:\Python FullStack\Interpreter\MultiProcessing\ticket') as f:
dic = json.load(f)
print('余票:%s' % dic['ticket'])
def buy_ticket(i,lock):
lock.acquire() #拿钥匙
with open(r'E:\Python FullStack\Interpreter\MultiProcessing\ticket') as f:
dic = json.load(f)
time.sleep(0.1)
if dic['ticket'] > 0:
dic['ticket'] -= 1
print('\033[32m%s买到票了\033[0m' % i)
else:
print('%s没买到票' % i)
time.sleep(0.1)
with open(r'E:\Python FullStack\Interpreter\MultiProcessing\ticket', 'w') as f:
json.dump(dic, f)
lock.release() #还钥匙
if __name__ == '__main__':
for i in range(10):
p = Process(target=show)
p.start()
lock = Lock() #获得一个锁
for t in range(10):
p1 = Process(target=buy_ticket, args=(t,lock))
p1.start()