我怎样才能找到Python脚本被杀的原因?

时间:2017-11-21 08:39:13

标签: python bash

我有大约100万个文件(输出模拟输出)。我想在一个文件中存储它们的特定信息。我有一个for循环,它到1M。我放了一个计数器来跟踪for循环的状态。它将是killed一些介于875000和900000之间的区域。尽管这可能是一个空间问题。 当我运行df -hdf /时,我有大约68G可用。 可能会导致Python脚本被杀死的其他可能原因是什么?我怎样才能更多地探索它?

3 个答案:

答案 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的输出。如果进程被内核杀死,那么它将有一个解释。最可能的原因:内存不足或文件描述符不足。