【发布时间】:2011-04-20 15:39:39
【问题描述】:
我有一个长期运行的 Python 进程,它生成的数据比我计划的要多。我的结果存储在一个列表中,该列表将在程序完成时被序列化(腌制)并写入磁盘 - 如果它达到那么远。但是按照这个速度,列表更有可能耗尽所有 1+ GB 的可用 RAM,并且进程会崩溃,从而丢失我在进程中的所有结果。
我计划修改我的脚本以定期将结果写入磁盘,但如果可能的话,我想保存当前正在运行的进程的结果。有什么方法可以从正在运行的进程中获取内存中的数据结构并将其写入磁盘?
我找到了 code.interact(),但由于我的代码中还没有这个钩子,它对我来说似乎没有用 (Method to peek at a Python program running right now)。
我在 Fedora 8 上运行 Python 2.5。有什么想法吗?
非常感谢。
沙欣
【问题讨论】:
-
你希望用'当前进程的数据结构'做什么?如果您将其保存并重新加载,您会不会像开始时一样内存不足?
-
在这种特殊情况下,我会将其传输到另一台机器(具有更多内存)以对其进行反序列化,然后将其逐个写回或直接加载到数据库中。显然不可持续,但我只是在这里寻找一种一次性的权宜之计。
标签: python linux memory fedora disk