如何暂停执行Ruby脚本并将进程序列化到磁盘?

时间:2013-08-16 16:58:41

标签: ruby serialization process deserialization

一个脚本需要花费大量时间。我想暂停它(例如通过按 p )并将其保存到HDD(例如,通过按 s ),以便稍后我可以从HDD恢复它。像Thread或像Celluloid这样的宝库这样的库可能会暂停代码的某些部分,但到目前为止我看到它们无法将当前进程保存到磁盘。

理想情况下,我想在脚本开头添加几行代码或类似这样的东西。

1 个答案:

答案 0 :(得分:2)

TL; DR

你正在解决错误的问题。如果您的脚本运行时间太长,请加快脚本速度,而不是尝试序列化操作系统进程。

替代方法

如果您坚持能够冻结进程并将状态保存到磁盘,则可能需要考虑在VirtualBox或VMware等虚拟机中运行进程。这两种产品都支持暂停虚拟机并将VM的当前状态保存到磁盘的功能。

我不知道如何在磁盘上存储运行的操作系统进程,而不是在某种虚拟化层内。如果你真的需要这个功能,那就是我推荐的方式。但是,通过提高代码的效率(瓶颈的配置文件或基准),扩展系统或以分布式方式扩展程序的任务,您可能会获得更大的收益。