Python 读取数据文件时内存泄漏
我编写了一个脚本来从一个(相当混乱的)数据文件导入数据。每一行在一个循环中分别读取和处理 我编写了以下代码以跳过标题和白线:Python 读取数据文件时内存泄漏,python,memory-leaks,readfile,memory-profiling,Python,Memory Leaks,Readfile,Memory Profiling,我编写了一个脚本来从一个(相当混乱的)数据文件导入数据。每一行在一个循环中分别读取和处理 我编写了以下代码以跳过标题和白线: for line in rd_file.readlines(): line_1 = line.rstrip("\n") # Decide what to do based on the content in the line.
for line in rd_file.readlines():
line_1 = line.rstrip("\n")
# Decide what to do based on the content in the line.
if "#" in line.lower():
header_flag=True
# Don't print the header
pass
elif line.strip() == "":
pass
else:
[...]
运行脚本时,我注意到内存泄漏。我使用找到它,我发现它是由于:
elif line.strip() == "":
pass
这是我从内存\u profiler
中得到的:
45 204.5 MiB 160.6 MiB elif line.strip() == ""
怎么可能只跳过一个空行就占用了160MB?您对如何解决这个问题有什么建议吗?我建议不要调用readlines(),而是依赖于python文件迭代器模式
for line in rd_file:
line_1 = line.rstrip("\n")
...
数据文件有多大?我怀疑您错误地使用了探查器。单独的行有多大?我必须使用readlines,因为我正在处理一个spt文件,如果我对rd_文件中的行使用
,
我会对rd_文件中的行()得到错误:TypeError:“file”对象不可调用。如果您有关于如何解决此问题的建议,请告诉我您的拼写错误。在rd_文件之后松开parens。python docs.Right中详细介绍了以迭代器模式使用文件对象。我做了建议的更改,但没有修复漏洞。我需要查看更多代码。我现在正在使用上面在project中描述的模式,它可以毫无问题地遍历20GB的文本文件。了解您对读取文件内容所做的操作也可能很有用。。。您没有将其存储在某种内存缓冲区中,是吗?我做了一些更改并重新分析了代码。泄漏可能是由于OpenCV造成的,我使用OpenCV使用cv2.imread加载tif图像:看起来垃圾收集器没有清理保存在内存中的图像文件。