Python3之互斥锁

来源:互联网 发布:浏览器注入js脚本 编辑:程序博客网 时间:2024/06/07 09:17

什么是互斥锁

由于并发状态下,操作系统对多个进程进行调度,而多个进程可能都有操作硬件的需求,这时就会产生多个进程对资源的共享,而共享意味着竞争,会产生许多问题。这样就需要一种机制或者手段去解决竞争,使竞争变得有序化,从而使共享资源按照预定的结果去获取。这种手段就是加互斥锁

代码演示

import jsonimport osfrom multiprocessing import Process, Lockdef check_ticket():    dic = json.load(open('a.txt'))    print('剩余票数:', dic['ticket'])def deal_ticket():    dic = json.load(open('a.txt'))    if dic['ticket'] > 0:        dic['ticket'] -= 1        json.dump(dic, open('a.txt', 'w'))        print('%s购票成功' % os.getpid())    else:        print('%s购票失败' % os.getpid())def buy_ticket(mutex):    check_ticket()    # 获取互斥锁后,进程只能在释放锁后下个进程才能进来    mutex.acquire()    deal_ticket()    # 互斥锁必须被释放掉    mutex.release()if __name__ == '__main__':    mutex = Lock()    for i in range(10):        p = Process(target=buy_ticket, args=(mutex,))        p.start()

加锁释放锁主要通过以下代码去实现:

mutex = Lock()mutex.acquire()mutex.release()
原创粉丝点击