我有大约100万个文件(输出模拟输出)。我想在一个文件中存储它们的特定信息。我有一个for循环,它到1M。我放了一个计数器来跟踪for循环的状态。它将是killed
一些介于875000和900000之间的区域。尽管这可能是一个空间问题。
当我运行df -h
或df /
时,我有大约68G可用。
可能会导致Python脚本被杀死的其他可能原因是什么?我怎样才能更多地探索它?
答案 0 :(得分:3)
通常,当程序用完RAM时会收到killed
消息(而不是你有足够的硬盘)。你应该监视主存。运行top并查看程序正在使用的内存,或者使用类似guppy(https://pypi.python.org/pypi/guppy/)的工具以编程方式跟踪内存利用率。
我猜测你在处理文件时会创建一些大内存数据结构,或许在迭代文件时不会对它们进行解除分配。
答案 1 :(得分:1)
代码片段会有所帮助。但是,我认为,你一次性加载内存中的所有文件,因为文件很大,可能会使RAM完全膨胀,从而使脚本死掉。如果您的用例是从每个文件中获取特定的行/文本,我建议使用re
模块进行模式并相应地读取文件。
请参阅syslog
。您可以在Ubuntu中的/var/log/
中获取syslog。 syslog将为您提供脚本失败的可能原因提示
答案 2 :(得分:1)
在Linux系统上,检查dmesg
的输出。如果进程被内核杀死,那么它将有一个解释。最可能的原因:内存不足或文件描述符不足。