Python モジュールを使用して 1 つのファイルに書き込もうとしてthreading
いますが、既にロックを使用してファイルにアクセスしています。以下のようなクラス:
class WriteToFile(threading.Thread):
def __init__(self,lock,fp):
threading.Thread.__init__(self)
self.lock=lock
self.fp=fp
def run():
self.lock.acquire()
self.fp.write('some string')
self.lock.release()
f=open('somefile','a')
lock=threading.Lock()
thread= WriteToFile(lock,f)
thread.start()
上記のコードはしばらくの間しか実行できず、停止しましたValueError: I/O operation on closed file
しかし、ファイル ハンドルを使用する代わりに、「ロックの取得と解放」ブロックの間でファイルにアクセスすると、コードはエラーなしで実行できます。ただし、すべてのスレッドがファイルを開いたり閉じたりするため、この方法は適切ではありません。
理由はありますか?Python 2.7.3 と Windows 7 を使用しています。