进程锁

import json
import time
from multiprocessing import Process
from multiprocessing import Lock

def show(i):
with open('ticket',encoding='utf-8') as f:
dic= json.load(f)
print('余票:%i'%dic['ticket'])



def buy_ticket(i,lock):
lock.acquire() #锁的开启
with open('ticket',encoding='utf-8') 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('\033[31m%s没买到票\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(10):
p=Process(target = show,args=(i,))
p.start()
lock =Lock() #锁的定义
for i in range(10):
p=Process(target= buy_ticket,args=(i,lock)) # 锁的传入
p.start()
posted @ 2020-09-03 10:46  济宁爱学习  阅读(112)  评论(0编辑  收藏  举报