我正在尝试使用 Pythonthreading
模块写入一个文件,并且我已经在使用锁来访问该文件。类如下:
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。