我目前正在使用带有Python包装器的C++脚本来逐行操作更大的(15 GB)文本文件.它的作用实际上是从input.txt读取一行,处理它,将结果输出到output.txt.我在这里使用straigtforward循环(inp被打开为input.txt,out作为output.txt打开):
for line in inp:
result = operate(line)
out.write(result)
Run Code Online (Sandbox Code Playgroud)
但是,由于C++脚本的问题,它有一些失败率,导致循环在大约一千万次迭代后关闭.这给我留下了一个仅使用10%输入的输出文件.
由于我无法修复原始脚本,所以我只想重新启动它停止的地方.我计算了output.txt的行,创建了另一个名为output2.txt,并启动了以下代码:
k = 0
for line in inp:
if k < 12123253:
k + = 1
else:
result = operate(line)
out2.write(result)
k + = 1
Run Code Online (Sandbox Code Playgroud)
然而,与我计算在一分钟内结束的线路相比,这种方法需要很长时间才能到达指定的线路.
为什么这种方法效率低下?有更快的吗?我在Windows PC上具有强大的计算能力(72GB RAM,良好的处理器),并使用python 2.7.
python ×1