Python是否有任何锁定接口可以在进程终止时自动中断锁定?我的印象是sysv ipc允许这样做,但我仍然试图弄清楚细节。
我对界面的期望:
答案 0 :(得分:1)
您可以使用fcntl.lockf
或fcntl.flock
将锁应用于文件。这似乎符合您的所有标准。或者,您是否需要每次想要锁定或解锁时都不需要系统调用的东西?
答案 1 :(得分:0)
我通常使用try ... finally块来释放锁。 e.g。
try:
#do stuff
except Exception:
pass
finally:
#release lock
答案 2 :(得分:0)
您可以尝试内置Lock
包中的multiprocessing
个对象。我不确定当进程被垃圾收集时锁是否会自动解锁,但你总是可以像这样继承multiprocessing.Process
:
class MyProc(multiprocessing.Process):
def __init__(self):
self.ipc_lock = multiprocessing.Lock()
# ...
return
def __del__(self):
self.ipc_lock.release()
return
如果在触发异常时需要解锁,则将其放入(覆盖的)run
方法中。