python 读写锁(优化)
2013-05-30 15:46
141 查看
python 读写锁(优化)
# import system module
import threading
class ReadWriteLock:
"""A lock object that allows many simultaneous "read-locks",
but only one "write-lock".
"""
def __init__(self,index):
self._read_ready = threading.Condition(threading.Lock())
self._readers = 0
self._index = index
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()
# import system module
import threading
class ReadWriteLock:
"""A lock object that allows many simultaneous "read-locks",
but only one "write-lock".
"""
def __init__(self,index):
self._read_ready = threading.Condition(threading.Lock())
self._readers = 0
self._index = index
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: 渐进猜数字游戏 <8> 代码优化 与 结项
- python性能优化摘录(二)
- 深入理解Python 代码优化详解
- 使用memory_profiler 与 cProfile ,line_profiler 优化Python程序运行时间和内存消耗实例
- python字符串处理简单优化
- Python性能优化的20条建议
- 删除目录下相同文件的python代码(逐级优化)
- Python性能优化(一)
- Python中使用装饰器来优化尾递归的示例
- “好串”求解算法优化原理与Python实现
- python购物车-优化版本
- [python]用profile协助程序性能优化
- Python 性能优化的20条招数
- python 程序的性能分析优化(huffman编码程序性能分析的一个小结论)
- Python学习笔记——while循环优化脚本(二)
- python性能优化
- [QA]Python字节码优化问题
- python优化 id()函数
- Python之mysql删改优化
- Python代码性能优化