python多线程之使用ReadWriteLock,,ReadWriteLoc
python多线程之使用ReadWriteLock,,ReadWriteLoc
ReadWriteLock是指允许多个线程同时读,但是只允许一个线程写
import threadingclass ReadWriteLock: """A lock object that allows many simultaneous "read-locks", but only one "write-lock".""" def __init__(self): self._read_ready = threading.Condition(threading.Lock()) self._readers = 0 def acquire_read(self): """Acquire a read-lock. Blocks only if some thread has acquired write-lock.""" self._read_ready.acquire() try: self._readers += 1 finally: self._read_ready.release() def release_read(self): """Release a read-lock.""" self._read_ready.acquire() try: self._readers -= 1 if not self._readers: self._read_ready.notifyAll() finally: self._read_ready.release() def acquire_write(self): """Acquire a write lock. Blocks until there are no acquired read- or write-locks.""" self._read_ready.acquire() while self._readers > 0: self._read_ready.wait() def release_write(self): """Release a write-lock.""" self._read_ready.release()
这个方法经常用来实现在不写的状态下允许对资源无限读,但要独占写锁。 因为python的threading模块中没有对应实现,上面的方法是通过Condition实现的。
相关内容
- python 调用windows api查看系统的电量,pythonapi,通过调用
- 显示django中的所有url设置,显示djangourl设置,下面的脚本
- python给数字加千分位,每隔三位加逗号,python千分,如题
- python list常用操作封装,pythonlist封装,如下是一系列li
- python 计算时间差,时间加减运算代码,python时间差,Q
- python复制某文件夹下指定扩展名的文件,并且保留原目
- python使用正则表达式实现的javascript文件压缩代码,py
- python使用baidu服务器时间设置操作系统时间,pythonbaid
- python弱引用示例,类保持对它所有实例的弱引用,pyt
- python弱引用使用介绍,python引用,和许多其它的高级语言
评论关闭