我只是好奇,是否可以将程序的所有变量和当前状态转储到文件中,然后在另一台计算机上恢复它?!
假设我在Python或Ruby中有一个小程序,给定一定条件,它会将所有当前变量和当前状态转储到文件中。
之后,我可以在另一台机器上重新加载它,并返回它
类似VM快照功能的东西
我在这里看到过这样的问题,但Java相关,保存当前的JVM并在不同的JVM中再次运行它。大多数人都说没有这样的东西,只有兵马俑有一些东西,但仍然不完美。
谢谢。
澄清我想要实现的目标:
鉴于2个或更多Raspberry Pi,我正在尝试在Pinº1上运行我的软件,但是当我需要做一些不同的事情时,我需要将软件移动到没有数据的Pinº2,只需要很短的休息时间。
等等,无限数量的机器。
答案 0 :(得分:2)
它的接缝是我试图重新发明轮子
检查此链接:
http://en.wikipedia.org/wiki/Application_checkpointing#DMTCP
http://www.linuxscrew.com/2007/10/17/cryopid-freeze-and-unfreeze-processes-in-linux/
答案 1 :(得分:1)
好问题。
在Smalltalk,是的。
实际上,在Smalltalk中,转储整个程序并重新启动是唯一方式来存储和共享程序。没有源文件,也没有办法从方块零启动程序。所以在Smalltalk你可以免费获得你的功能。
Smalltalk VM提供了一个钩子,每个对象可以在重新启动后注册以恢复其外部资源,如重新打开文件和Internet连接。但是,例如,如果将转储移动到具有不同字节序的计算机,则会将整数数组注册到该挂钩以更改其值的字节顺序。
这可能会让我们意识到在一种不支持设计的可恢复转储的语言中,它有多么难以实现这一目标。
唉,所有其他语言都少了很多。除了一些Lisp实现,我不知道任何支持从内存转储恢复的语言。
这是一个错过的机会。
答案 2 :(得分:0)
我见过Mariano在最近的Esug会议上演示了在Pharo Smalltalk中使用Fuel(对象序列化)。只要没有命中未序列化的对象,就可以继续调试和运行。 Squeak smalltalk在Pi上运行,如果保存图像对你来说足够好,这是微不足道的。我们仍在等待更快的JITting VM for ARM(Google Summer of Code计划的一部分)