python并发

5. python多进程锁-实现简易抢票

2018-12-25  本文已影响10人  花间派I风月

一、主题


二、多进程实现简易抢票程序

ticket

{"ticket":1}

抢票程序

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

def show_ticket(i):
    time.sleep(0.1)
    with open('ticket') as f:
        dic = json.load(f)
        print('余票: %s' %dic.get('ticket'))

def buy_ticket(i, lock):
    lock.acquire() #加锁
    with open('ticket') as f:
        dic = json.load(f)
        time.sleep(0.1)
        if dic.get('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_ticket, args=(i,) )
        p.start()
    lock = Lock()
    for i in range(10):
        p1 = Process(target=buy_ticket, args=(i,lock))
        p1.start()
上一篇 下一篇

猜你喜欢

热点阅读