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()
阅读全文
0 0
- Python3之互斥锁
- Linux之安装python3.*
- python3入门之字符串
- python3入门之字典
- python3之循环
- python3入门之函数
- Python3 之logging
- python3爬虫之旅
- Python3之re模块
- Python3 之 urllib
- python3.4之决策树
- Python3教程之《安装》
- python3爬虫之UserAgent
- python3学习之string
- python3学习之list
- python3学习之tuple
- python3学习之dict
- python3学习之set
- bat文件和sh文件
- hdu 6180 Schedule (multiset)
- ZTE 2018
- tip
- JavaScript对象和方法算术运算或输出之valueOf和toString优先级
- Python3之互斥锁
- shell 脚本删除过期文件
- POJ 2449 Remmarguts' Date K短路
- VC-文件隐藏的三种常用方法
- gulp-usemin <gulp插件>
- python|打印杨辉三角
- Wooden Sticks
- Android Studio 打包时 Signature Version V1 V2
- IFIX 4.0 竖向文字