是否有任何用于Python的锁定接口,当进程死亡时会自动打开锁?我的印象是sysv ipc允许这样做,但我仍然试图弄清楚细节。当进程死亡时会消失的Python锁
我从接口有什么期望:
- 锁定/解除功能
- Linux上的不同进程之间的工作
- 自动解锁当进程持有锁死亡
- 强制锁定打破超时(不需要)
是否有任何用于Python的锁定接口,当进程死亡时会自动打开锁?我的印象是sysv ipc允许这样做,但我仍然试图弄清楚细节。当进程死亡时会消失的Python锁
我从接口有什么期望:
您可以使用将锁应用于文件210或fcntl.flock
。这似乎符合你的所有标准。或者,您是否需要每次要锁定或解锁时都不需要系统调用的内容?
我通常使用try ... finally块来释放一个锁。 例如
try:
#do stuff
except Exception:
pass
finally:
#release lock
你可以尝试在建multiprocessing
包Lock
对象。我不知道是否一个进程垃圾回收时,门锁会自动解锁,但你总是可以继承multiprocessing.Process
这样的:
class MyProc(multiprocessing.Process):
def __init__(self):
self.ipc_lock = multiprocessing.Lock()
# ...
return
def __del__(self):
self.ipc_lock.release()
return
,如果你需要解锁如果有异常被触发,然后放进了(重写)run
方法。
不,系统调用就好:) – viraptor 2012-01-11 17:34:35