Python 进程因 "Low Swap" 写入数据科学的标准输出而终止

Python Process Terminated due to "Low Swap" When Writing To stdout for Data Science

我是 python 的新手,所以对于任何误解,我深表歉意。

我有一个 python 文件需要 read/write 到 stdin/stdout 多次(数十万次)用于大型数据科学项目。我知道这并不理想,但在这种情况下我别无选择。

在 运行ning 大约一个小时后(接近完成一半),由于 "Low Swap",我的 mac 进程终止,我认为这是指内存不足。除了 read/write 之外,我几乎没有进行任何计算,实际上只是想在继续之前成功地将其达到 运行。

我的问题:写入 stdin/stdout 几十万次会占用那么多内存吗?该文件基本上需要遍历一些大列表(15k 整数)并执行几千次。我有 500 GB 的硬盘驱动器 space 和 12 GB 的 RAM,但仍然出现错误。我什至在 AWS 上启动了一个 EC2 实例,但仍然有内存错误。即使我什么都没做,脚本中是否可能存在某种内存泄漏?无论如何,我成功地将内存使用量减少到 运行 了吗?

感谢任何帮助。

the process gets terminated on my mac due to "Low Swap" which I believe refers to lack of memory

SWAP space 是主内存的一部分 - RAM。

当用户读取 文件时,它会将文件放入主内存(缓存和 RAM)中。完成后将其删除。 但是,当用户 写入 到文件时,需要记录更改。一个问题。如果您每毫秒写入不同的文件怎么办。 RAM 和 L 缓存达到容量,因此最近最少使用的 (LRU) 文件被放入 SWAP space。由于 SWAP 仍然是主内存的一部分(不是硬盘驱动器),它可能会溢出并丢失信息,从而导致崩溃。

Is it possible that I have some sort of memory leak in the script even though I'm not doing hardly anything?

可能

Is there anyway that I reduce the memory usage to run this successfully?

一种方法是考虑您如何管理文件。读取不会伤害 SWAP,因为文件可以被废弃,无需保存。在处理了一定数量的信息或经过一定时间后,您可能希望明确保存文件(关闭和打开文件应该可行)。因此,从 SWAP space.

中删除文件