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

如何暂停Ruby脚本的执行并将进程序列化到磁盘?,ruby,serialization,process,deserialization,Ruby,Serialization,Process,Deserialization,一个脚本需要很多时间。我想暂停它(如按p键)并将其保存到硬盘(如按s键),以便稍后从硬盘恢复。像线程这样的库或者像赛璐珞这样的gems可能会暂停部分代码,但据我所知,它们无法将当前进程保存到磁盘 理想情况下,我希望在脚本开头放几行代码,或者像这样简单的东西。TL;博士 你在解决错误的问题。如果脚本运行时间过长,请加快脚本速度,而不是尝试序列化操作系统进程 替代办法 如果你坚持要冻结进程并将状态保存到磁盘,你可能需要考虑在虚拟机中运行进程,如VirtualBox或VMware。这两种产品都支持暂停

一个脚本需要很多时间。我想暂停它(如按p键)并将其保存到硬盘(如按s键),以便稍后从硬盘恢复。像线程这样的库或者像赛璐珞这样的gems可能会暂停部分代码,但据我所知,它们无法将当前进程保存到磁盘

理想情况下,我希望在脚本开头放几行代码,或者像这样简单的东西。

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

替代办法

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


除了某种虚拟化层之外,我不知道有什么方法可以将正在运行的操作系统进程存储在磁盘上。如果你真的需要这个功能,那就是我推荐的方式。但是,通过提高代码的效率(针对瓶颈的配置文件或基准测试)、扩展系统或以分布式方式扩展程序的任务,您可能会获得更大的回报。

因此,您有一个正在运行的脚本,您希望停止它,将其所有状态序列化到磁盘,然后稍后从磁盘重新启动它,对吗?我不知道这样的事情,因为有不可序列化的东西(打开的文件、套接字等等),我认为如果有这样的事情,会有很大的限制。Smalltalk不是提供了这样的东西吗?图像?