互斥锁之模拟抢票

不打扰是莪最后的温柔 提交于 2019-11-29 13:52:36
import time, jsonfrom multiprocessing import Process, Lock  #  互斥锁def serch(name):    time.sleep(1)    dic = json.load(open('db.txt', 'r', encoding='utf-8'))    print('%s查看到剩余票数是%s'%(name, dic['count']))def get(name):    dic = json.load(open('db.txt', 'r', encoding='utf-8'))    if dic['count'] > 0:        dic['count'] -= 1        time.sleep(3)        json.dump(dic, open('db.txt', 'w', encoding='utf-8'))        print('%s抢票成功!'%name)def task(name, mutex):    serch(name)    mutex.acquire()  #开启互斥锁    get(name)    mutex.release()  #关闭互斥锁if __name__ == '__main__':    mutex = Lock()  #互斥锁实例化    for i in range(10):        p = Process(target=task, args=('路人%s'%i, mutex))   #运用到子进程中一定要从父进程传入‘mutex’否则子进程会重新实例化互斥锁        p.start()#互斥锁的的意义是只能单个进程进行,所以有开启互斥锁也就又关闭互斥锁的机制
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!