30 进程锁

为了保证数据的安全性。

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()

猜你喜欢

转载自blog.csdn.net/weixin_43265998/article/details/90240049
30