线程锁 Lock - 多线程 (Threading) | 莫烦Python
切换视频源:

线程锁 Lock

作者: Leoliao 编辑: 莫烦 2016-11-03

学习资料:

导入线程标准模块

不使用 Lock 的情况

函数一:全局变量A的值每次加1,循环10次,并打印

函数二:全局变量A的值每次加10,循环10次,并打印

主函数:定义两个线程,分别执行函数一和函数二

完整代码:

运行结果(在spyder编译器下运行的打印结果):

可以看出,打印的结果非常混乱

使用 Lock 的情况

lock在不同线程使用同一共享内存时,能够确保线程之间互不影响,使用lock的方法是, 在每个线程执行运算修改共享内存之前,执行lock.acquire()将共享内存上锁, 确保当前线程执行时,内存不会被其他线程访问,执行运算完毕后,使用lock.release()将锁打开, 保证其他的线程可以使用该共享内存。

函数一和函数二加锁

主函数中定义一个Lock

完整的代码

运行结果

从打印结果来看,使用lock后,一个一个线程执行完。使用lock和不使用lock,最后打印输出的结果是不同的。


降低知识传递的门槛

莫烦很常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛免费 奉献我的所学正是受这种态度的影响。 通过 【赞助莫烦】 能让我感到认同,我也更有理由坚持下去。

    多线程 (Threading)