我有一个从多处理池写入的 gzip 文件句柄。不幸的是,输出文件似乎在某个时间点后损坏了,因此执行以下操作zcat out | wc
:
gzip: out: invalid compressed data--format violated
我正在通过不使用 gzip 来解决这个问题。但我很好奇为什么会发生这种情况以及是否有任何解决方案。
不确定这是否重要,但我在我无法控制的远程 linux 机器上运行代码,但我的猜测是它是一台 ubuntu 机器。Python 2.7.3
这是稍微简化的代码:
lock = Lock()
ohandle = gzip.open("out", "w")
def process(fn):
rv = []
for l in open(fn):
sometext = dosomething(l)
rv.append(sometext)
lock.acquire()
for sometext in rv:
print >> ohandle, sometext
lock.release()
pool = Pool(processes=4)
pm = pool.map(process, some_file_list])
ohandle.close()