擅长:python、mysql、java
<p>@goncaplopp的答案很好,但是如果在外部运行gzip,可以获得更多的并行性。由于您正在收集大量数据,因此可能需要付出额外的努力。您需要找到自己的windows压缩例程(有几个gzip实现,但类似7z的东西也可以工作)。您还可以尝试使用lz这样的压缩比gzip更多的东西,这取决于您的系统中还需要优化什么。</p>
<pre><code>import subprocess as subp
import os
class GZipWriter(object):
def __init__(self, filename):
self.filename = filename
self.fp = None
def __enter__(self):
self.fp = open(self.filename, 'wb')
self.proc = subp.Popen(['gzip'], stdin=subp.PIPE, stdout=self.fp)
return self
def __exit__(self, type, value, traceback):
self.close()
if type:
os.remove(self.filename)
def close(self):
if self.fp:
self.fp.close()
self.fp = None
def write(self, data):
self.proc.stdin.write(data)
with GZipWriter('sometempfile') as gz:
for i in range(10):
gz.write('a'*80+'\n')
</code></pre>