擅长:python、mysql、java
<p>我在考虑你对dictionary键的循环,以及一个wqya来优化这一点,并允许在以后对你的代码进行其他注释。在</p>
<p>但后来我无意中发现了这一点:</p>
<pre><code>if linecounter in mult10K:
print linecounter
print (datetime.now()-startTime)
</code></pre>
<p>这个看起来像inocent的片段实际上让Python按顺序查看并比较文件中每行的“linecounter”列表中的10000个项。在</p>
<p>将此部件替换为:</p>
^{pr2}$
<p>(忘记所有的mult10k部分)-你应该得到一个显著的加速。在</p>
<p>而且,似乎您正在为每个输入行记录多个输出行-
你的主循环是这样的:</p>
<pre><code>linecounter = 0
for line in infile2:
for key, value in udict.items():
matches = line.count(key)
if matches > 0:
print key, value
line = line.replace(key, value)
outfile.write(line + '\n')
else:
outfile.write(line + '\n')
linecounter += 1
</code></pre>
<p>将其替换为:</p>
<pre><code>for linecounter, line in enumerate(infile2):
for key, value in udict.items():
matches = line.count(key)
if matches > 0:
print key, value
line = line.replace(key, value)
outfile.write(line + '\n')
</code></pre>
<p>它只为每个输入行正确地写入一个输出行(除了消除代码重复,并以“pythonic”方式处理行计数之外)</p>