首页 > 其他 > 详细

并发编程-互斥锁小练习:模拟抢票

时间:2019-02-20 10:46:15      阅读:123      评论:0      收藏:0      [点我收藏+]

多个进程共享同一文件

文件当数据库,模拟抢票

#文件db的内容为:{"count":1}
#注意一定要用双引号,不然json无法识别
from multiprocessing import Process,Lock
import time,json,random
def search():
    dic=json.load(open(db.txt))
    print(\033[43m剩余票数%s\033[0m %dic[count])

def get():
    dic=json.load(open(db.txt))
    time.sleep(0.1) #模拟读数据的网络延迟
    if dic[count] >0:
        dic[count]-=1
        time.sleep(0.2) #模拟写数据的网络延迟
        json.dump(dic,open(db.txt,w))
        print(\033[43m购票成功\033[0m)

def task(lock):
    search()
    get()
if __name__ == __main__:
    lock=Lock()
    for i in range(100): #模拟并发100个客户端抢票
        p=Process(target=task,args=(lock,))
        p.start()

 

并发编程-互斥锁小练习:模拟抢票

原文:https://www.cnblogs.com/hexiaorui123/p/10404597.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!