1

我编写了一个脚本来从(相当混乱的)数据文件中导入数据。每一行都在一个循环中单独读取和处理。

我编写了以下代码来跳过标题和白行:

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:       
        [...]

运行脚本我注意到内存泄漏。我使用memory_profiler找到它,我发现它是由于:

elif line.strip() == "": 
  pass 

这就是我从中得到的memory_profiler

45    204.5 MiB    160.6 MiB           elif line.strip() == ""

跳过一个空行怎么可能占用 160 MB?你对如何解决这个问题有什么建议吗?

4

1 回答 1

2

我建议不要调用 readlines(),而是依赖于 python 文件迭代器模式。

for line in rd_file:
    line_1 = line.rstrip("\n")   
    ...
于 2014-02-20T13:20:03.977 回答