我是python的新手,所以我为任何误解道歉。
我有一个python文件需要多次读取/写入stdin / stdout(数十万)用于大型数据科学项目。我知道这不太理想,但在这种情况下我没有选择。
经过大约一个小时的运行(接近完成中途),由于“低交换”而我的mac终止了该过程,我认为这是指缺少内存。除了读/写之外,我几乎没有进行任何计算,我真的只是试图让它成功运行再继续前进。
我的问题:写入stdin / stdout数十万次会占用那么多内存吗?该文件基本上需要遍历一些大型列表(15k整数)并执行几千次。我有500演出的硬盘空间和12演出的ram,我仍然得到错误。我甚至在AWS上运行了一个EC2实例,而STILL却出现了内存错误。即使我几乎没有做任何事情,我是否有可能在脚本中出现某种内存泄漏?无论如何我是否减少了内存使用量来成功运行?
感谢任何帮助。
答案 0 :(得分:1)
由于"低交换"该过程在我的Mac上终止我认为这是指缺乏记忆
SWAP空间是主内存的一部分 - RAM。
当用户读取文件时,它会将主内存(缓存和RAM)放入其中。完成后删除它。 但是,当用户写入到文件时,需要记录更改。一个问题。如果你每毫秒写一个不同的文件怎么办? RAM和L缓存达到容量,因此最近最少使用(LRU)文件被放入SWAP空间。由于SWAP仍然是主内存(不是硬盘驱动器)的一部分,因此可能会溢出并丢失信息,这可能会导致崩溃。
即使我没有做任何事情,我是否有可能在脚本中出现某种内存泄漏?
可能
无论如何,我是否减少了内存使用量才能成功运行?
一种方法是考虑如何管理文件。读取不会损害SWAP,因为文件可以被废弃,而无需保存。在处理了一定量的信息或经过了一定的时间后,您可能希望显式保存文件(关闭并打开文件应该有效)。因此,从SWAP空间中删除文件。