gpt4 book ai didi

python - Win7 上的 Python 中即使没有使用大型数据结构,也会消耗超过 7 GB 内存的错误

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:56 24 4
gpt4 key购买 nike

我正在使用 python 2.7 来比较 win7 上的两个 txt 文件。

我不使用任何大型数据结构。但是,它消耗超过 7.78 GB 内存。所有文件都位于本地驱动器。

file1 = open(myfile1, 'r')
file2 = open(myfile2, 'r')
result_file1 = open(result_file, 'w')

while 1:
l1 = file1.readline()
l2 = file2.readline()
if (l1 is EOFError or l2 is EOFError):
break
if (l1 != l2):
a_line = l1.strip().split(',')
b_line = l2.strip().split(',')
if(a_line[0] != b_line[0] or a_line[1] != b_line[1]):
print("error " + str(a_line) + " col not match " + str(b_line))
return (1)
error = abs(float(a_line[2]) - float(b_line[2]))/float(a_line[2])
result_file1.write(a_line[0] + "," + a_line[1]+ "," + a_line[2]
+ "," + b_line[3] + "," + str(rel_error*100) + "\n")
result_file1.close()
file1.close()
file2.close()

result_file1 不超过 50 MB。

谢谢!

最佳答案

好吧,在你的代码中,没有明显的原因说明为什么它占用了那么多内存最好在函数结束时使用上下文管理器关闭文件。当您迭代文件直到其中一个失败时,迭代也是一个好主意同时使用两个迭代器。另请注意,如果您使用的是 python3,则应使用 zip()而不是 izip(),因为 izip() 已被弃用。

try:
with open(myfile1, 'r') as file1:
with open(myfile2, 'r') as file2:
with open(result_file, 'w') as file3:
for l1, l2 in izip(file1, file2):
if (l1 != l2):
a_line = l1.strip().split(',')
b_line = l2.strip().split(',')
if(a_line[0] != b_line[0] or a_line[1] != b_line[1]):
raise Exception("error {} could not match {}".format(a_line, b_line))
error = abs(float(a_line[2]) - float(b_line[2]))/float(a_line[2])
result_file1.write("{},{},{},{},{}\n".format(a_line[0],
a_line[1],
a_line[2],
b_line[3],
rel_error*100)
except Exception as err:
print err

鉴于我在这里给出的代码,每个文件不应该同时加载到内存中超过一行。如果您仍然遇到内存问题,则可能是您的代码中的其他内容可能出现问题,或者您的系统释放内存的速度不够快。

关于python - Win7 上的 Python 中即使没有使用大型数据结构,也会消耗超过 7 GB 内存的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23575351/

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