进程锁

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('33[32m%s买到票了33[0m'%i)
else:
print('33[31m%s没买到票33[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()
原文地址:https://www.cnblogs.com/liu1983/p/13606320.html