プロセスが終了したときに自動的にロックを解除するPythonのロックインタフェースはありますか?私はsysv ipcがそれを可能にしているという印象を受けましたが、私はまだ詳細を把握しようとしています。ロックを保持しているプロセスがタイムアウトに破壊 プロセスが終了したときに消えるPythonロック
- ロック/解除機能
- :私はインタフェースから期待するもの
(不要)
プロセスが終了したときに自動的にロックを解除する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
メソッド。
いいえ、syscallsは問題ありません:) – viraptor