繁体   English   中英

清洁 python RAM memory

[英]Clean python RAM memory

我有一些脚本,它们从 BigQuery 下载数据,使其更易于处理并将其传输到 PostgreSQL。 问题是,来自 BigQuery 的文件非常庞大。 相隔一天,每天大约有 700-1500 Mb 的数据,使用 pandas 数据帧处理。 我试图制作一个脚本,以便它一个一个地处理每个文件,但是我用完了 memory。

循环末尾的 gc.collect() 没有帮助,使用 del(n, h, r) 删除每个循环中的每个 dataframe 也无法按需要工作。 仍然用完RAM。

我试图循环运行脚本,认为这可能会有所帮助

for dir, subdir, files in os.walk(source_path):
    for file in files:
        exec(open("script.py").read())
        gc.collect()

在脚本的最后,我还有 gc.collect() 和 del()。 它仍然最多可以执行 2、3 个文件,然后用完 memory。

我试图将 sys.exit 放在 script.py 的末尾,但在这种情况下,上述循环在 1 个文件后中断。

如何避免 memory 用完? 基本上,从循环的上一次迭代中清理文件的 RAM 并继续到下一次?

处理此问题的更好方法是通过 pandas 块处理程序。

 for chunk in pd.read_sql_query(sql , con, chunksize=10000):
      # upload chunk into PG, so you're not reading the entire table at once

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM