gpt4 book ai didi

python - 逐行读取文件,并为耗时过长的行设置超时?

转载 作者:行者123 更新时间:2023-12-01 02:32:42 25 4
gpt4 key购买 nike

我有一个 1.2TB 的文件,正在对其运行一些代码,但经常遇到 OutOfMemoryError 异常。我针对该文件运行了以下两段代码,看看出了什么问题:

import sys

with open(sys.argv[1]) as f:
count = 1
for line in f:
if count > 173646280:
print line
else:
print count
count += 1

这段代码:

#!/usr/bin/env perl
use strict;
use warnings;

my $count = 1;
while (<>) {
print "$count\n";
$count++;
}

它们都缩放直到到达第 173,646,264 行,然后完全停止。让我简单介绍一下该文件的背景。

我创建了一个名为groupBy.json的文件。然后,我使用一些 Java 代码处理该文件以转换 JSON 对象,并创建一个名为 groupBy_new.json 的文件。我将 groupBy_new.json 放在 s3 上,将其拉到另一台服务器上,并在开始收到 OOM 错误时对其进行一些处理。我想可能是文件在传输到 s3 时损坏了。我在 serverA (它最初所在的服务器)和 serverB (我从 s3 中提取文件的服务器)上的 groupBy_new.json 上运行了上面的 Python/Perl 代码,两者都停止在同一条线。我在原始文件 groupBy.json 上运行了上面的 Python/Perl 代码,它也停止了。我尝试使用最初创建它时使用的相同代码重新创建 groupBy_new.json,但遇到了 OOM 错误。

所以这是一个让我困惑的非常奇怪的问题。简而言之,我想摆脱这条给我带来问题的线路。我想做的是读取一个在读取行上超时的文件。如果在 2 秒左右无法读取输入行,请转到下一行。

最佳答案

您可以做的是计算问题行之前的行数并将其输出 - 确保刷新输出 - 请参阅 https://perl.plover.com/FAQs/Buffering.html 。然后编写另一个程序,将该行数的第一行复制到另一个文件,然后逐个字符读取文件的输入流(参见 http://perldoc.perl.org/functions/read.html ),直到遇到“\n”,然后复制其余的行文件 - 逐行或分块。

关于python - 逐行读取文件,并为耗时过长的行设置超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46620426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com