2012-01-11 19 views
1

プロセスが終了したときに自動的にロックを解除するPythonのロックインタフェースはありますか?私はsysv ipcがそれを可能にしているという印象を受けましたが、私はまだ詳細を把握しようとしています。ロックを保持しているプロセスがタイムアウトに破壊 プロセスが終了したときに消えるPythonロック

  • 強制ロックを死ぬとLinux上で異なるプロセス間で
  • 自動ロック解除を作業

    • ロック/解除機能
    • :私はインタフェースから期待するもの

      (不要)

  • 答えて

    1

    を使用してファイルにロックを適用できます210またはfcntl.flock。それはあなたのすべての基準を満たすようです。または、ロックまたはロックを解除するたびにシステムコールを必要としないものが必要ですか?

    +0

    いいえ、syscallsは問題ありません:) – viraptor

    0

    私は通常、try ... finallyブロックを使用してロックを解除します。例:

    try: 
        #do stuff 
    except Exception: 
        pass 
    finally: 
        #release lock 
    
    0

    あなたは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メソッド。

    関連する問題