python模块学习(threading模块中的Lock类和RLock类)
来源:互联网 发布:2017最流行网络用语 编辑:程序博客网 时间:2024/06/04 23:35
学习版本3.5.2
Lock类:一个线程对资源进行加锁操作之后其它线程就必须等它释放锁之后才能对该资源进行操作。acquire()与acquire_lock()都是加锁操作,release()与release_lock()都是释放锁操作,locked()与locked_lock()都是查询当前锁的状态。
RLock类:线程对资源进行加锁操作后,该线程还能继续对该资源加锁,加锁和释放锁的数量需要是一样的。acquire()是加锁操作,release()是释放锁操作。最大的作用就是在递归调用的时候避免死锁。
import threadingif __name__ == "__main__": lock = threading.Lock() #lock = threading.RLock()使用这句的时候下面就不会死锁 lock.acquire() lock.acquire()#死锁 lock.release() lock.release()
不用锁的时候
#/usr/bin/python3# -*- utf-8 -*-#学习版本3.5.2import threadingimport timedef test(num): global value #lock.acquire() print(num) value += num print(value) #lock.release()if __name__ == "__main__": threadlist = [] #lock = threading.Lock() value = 10 for i in range(5): t = threading.Thread(target=test,args=(i,)) threadlist.append(t) for t in threadlist: t.start() print("main")
运行结果
0101211main13316420
用锁的情况
#/usr/bin/python3# -*- utf-8 -*-#学习版本3.5.2import threadingimport timedef test(num): global value lock.acquire() print(num) value += num print(value) lock.release()if __name__ == "__main__": threadlist = [] lock = threading.Lock() value = 10 for i in range(5): t = threading.Thread(target=test,args=(i,)) threadlist.append(t) for t in threadlist: t.start() print("main")
运行结果
010111213316420main
阅读全文
0 0
- python模块学习(threading模块中的Lock类和RLock类)
- python的threading模块中threading.RLock和threading.Lock
- python—threading.Lock和RLock【threading模块介绍02】
- python2.7 threading 模块 二 Lock RLock
- python模块学习(threading模块中的Thread类)
- python模块学习(threading模块中的Timer类)
- python模块学习(threading模块中的Condition类)
- python模块学习(threading模块中的Event类)
- python模块学习(threading模块中的Barrier类)
- python模块学习(threading模块中的Semaphore类和BoundedSemaphore类)
- 关于Python的进程线程协程之threading模块(二)Lock,RLock对象以及Semaphore,BoundedSemaphore对象
- Python:使用threading模块实现多线程编程六[可重入锁RLock]
- Python:使用threading模块实现多线程编程六[可重入锁RLock]
- python中的threading模块
- python threading/lock&Rlock&condition 锁
- python多线程模块threading学习
- python模块学习(threading模块的方法)
- Python多线程编程(threading ):使用Lock互斥锁RLock
- java发送短信验证码
- Java类的初始化过程
- Linux系统下PORT端口引脚导出GPIO对应的序号关系
- Android 拖拽操作demo
- gradle配置升级
- python模块学习(threading模块中的Lock类和RLock类)
- php支付宝开发之pc网站支付接入
- ActiveMq--01
- centos7修改网卡名称、网卡双网卡绑定
- knockout click点击事件及事件源解释
- 数学笔记18——定积分的应用3(均值、权重、概率)
- JavaScript prototype 属性
- python多进程笔记4
- QT之qss教程-QProgressBar