码迷,mamicode.com
首页 > 系统相关 > 详细

多进程抢票加锁

时间:2020-12-31 12:02:45      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:macbook   controls   抢票   and   time   arc   rand   style   from   

code
# 文件db的内容为:{"count":5}
# 注意一定要用双引号,不然json无法识别
# 并发运行,效率高,但竞争写同一文件,数据写入错乱
from multiprocessing import Process,Lock
import time,json,random
def search():
    dic=json.load(open(db))
    print(剩余票数%s %dic[count])
 
 
def get():
    dic=json.load(open(db))
    time.sleep(random.random())  # 模拟读数据的网络延迟
    if dic[count] >0:
        dic[count]-=1
        time.sleep(random.random())  # 模拟写数据的网络延迟
        json.dump(dic,open(db,w))
        print(购票成功)
    else:
        print(购票失败)
 
 
def task(lock):
    search()
    lock.acquire()
    get()
    lock.release()
 
 
if __name__ == __main__:
    lock = Lock()
    for i in range(100):  # 模拟并发100个客户端抢票
        p=Process(target=task,args=(lock,))
        p.start()
outputs 
macname@MacdeMacBook-Pro py % python3 cccccc.py
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
剩余票数2
购票成功
购票成功
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
购票失败
macname@MacdeMacBook-Pro py %

 

 
 
 
 
 
 
 
 
 
 
 

多进程抢票加锁

标签:macbook   controls   抢票   and   time   arc   rand   style   from   

原文地址:https://www.cnblogs.com/sea-stream/p/14192838.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!