実行中のスレッド(以下のコード)が、ブロックするサブプロセスを起動しています。他のスレッドが同じサブプロセスを起動しないようにするには、このsubprocess.call
コールの周りにロックがあります。私はまた、このサブプロセス呼び出しを終了することができるようにしたいので、私はどこからでも呼び出すstop関数を持っています。サブプロセスが途中で停止した場合には、私は以下のコードが何をするかであるだけでなく、ロックを解除したい:Pythonのthreading.Lockがロックされているかどうかを照会してください
class SomeThread(threading.Thread):
def run(self):
aLock.acquire()
self.clip = subprocess.call([ 'mplayer', 'Avatar.h264'], stdin=subprocess.PIPE)
aLock.release()
def stop(self):
if self.clip != None and self.clip.poll() == True:
try:
self.clip.send_signal(signal.SIGINT)
except:
pass
aLock.release()
をしかし、ドキュメンテーションhereによると、ロック解除にrelease()
を呼び出して発生させます例外:
A RuntimeError is raised if this method is called when the lock is unlocked.
aLock.isLocked()
ようなクエリ機能がありますか?
これは始まりのようです...もっと深くする必要があります – puk