Python 3基础教程42-锁
来源:互联网 发布:Laymine java 编辑:程序博客网 时间:2024/05/17 01:03
前面一篇文章介绍了GIL,提到了锁,也介绍了,Python中执行代码,只能是一个线程执行,等这个线程暂停或者执行结束,才切换到第二个线程开始工作。今天就介绍锁的使用,通过一个例子来介绍。简单来说,我有两个线程,分别做job1和job2,我需要先完成job1,然后去完成job2。那么这个过程,我就需要先锁住线程1,等线程1完成了,我才去解锁,这样就开始做线程2的任务。
import threadingdef job1(): global A, lock # 开始插入一个锁标记,这个线程已经被锁住了 lock.acquire() for i in range(10): A += 1 print('job1', A) # 等这个线程工作干完了,就释放锁,也就是解锁 lock.release()def job2(): global A, lock lock.acquire() for i in range(10): A += 5 print('job2', A) lock.release()def exampleFuc(): # 定义一个共享内存,全局变量 global A A = 0 # 定义一个全局锁 global lock lock = threading.Lock() t1 = threading.Thread(target=job1) t2 = threading.Thread(target=job2) t1.start() t2.start() t1.join() t2.join()exampleFuc()运行效果:
============= RESTART: C:\Users\Anthony\Desktop\thread_queue.py =============job1 1job1 2job1 3job1 4job1 5job1 6job1 7job1 8job1 9job1 10job2 15job2 20job2 25job2 30job2 35job2 40job2 45job2 50job2 55job2 60>>>
0 0
- Python 3基础教程42-锁
- 《python基础教程》项目3
- Python基础教程(3)字符串
- Python 3基础教程4-变量
- Python 3基础教程9-函数
- Python 3基础教程16-类
- Python 3基础教程27-字典
- Python 3基础教程32-正则
- Python基础教程
- Python基础教程
- Python基础教程
- Python 基础教程
- python 基础教程
- python基础教程
- 《Python基础教程》
- Python基础教程
- Python 基础教程
- Python基础教程
- stm32外部中断实验
- 用C++实现中缀表达式求值即简单科学计算器的功能
- springmvc+mybatis+mysql 根据生日计算年龄
- 工厂模式
- java Swing中的布局模式
- Python 3基础教程42-锁
- unity2D的物理碰撞和非物理碰撞的认识
- iOS中NSString转float失真问题的解决办法
- Apalis TK1 运行 Android 7.1
- 关于Linux-网络通信工具
- Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't
- mysql-Innodb事务隔离级别-repeatable read详解(转)
- SQL循环更字段的值
- 修改Android7.1.1里的Settings使设备能默认安装未知来源的应用