擅长:python、mysql、java
<p>我敢打赌,使用appending同时处理大型结构会使它变慢。我通常做的是打开尽可能多的文件作为核心,并使用模来立即写入每个文件,这样流就不会引起麻烦,而不是将它们全部导入同一个文件(写入错误),也不会试图存储大量数据。也许不是最好的解决办法,但确实很简单。最后你只需合并回结果。在</p>
<p>在运行开始时定义:</p>
<pre><code>num_cores = 8
file_sep = ","
outFiles = [open('out' + str(x) + ".csv", "a") for x in range(num_cores)]
</code></pre>
<p>然后在key_loop函数中:</p>
^{pr2}$
<p>之后,别忘了关闭:<code>[x.close() for x in outFiles]</code></p>
<p>改进:</p>
<ul>
<li><p>迭代注释中提到的块。一次写/处理一行要比写块慢得多。</p></li>
<li><p>处理错误(关闭文件)</p></li>
<li><p>重要提示:我不确定“keys”变量的含义,但其中的数字不允许modulo确保每个进程都写入每个单独的流(12个键,modulo 8将使2个进程写入同一个文件)</p></li>
</ul>