我正在运行一个需要几个小时才能完成的 Python 程序。如果我合上笔记本电脑的盖子(即让它进入睡眠状态),当我重新打开笔记本电脑时,该程序会重新启动吗?已经过去了几个小时,我很快就要离开了(所以我需要关闭笔记本电脑),但我不想再次启动该过程。程序会从完全相同的位置启动吗?Ubuntu 16.04 中的默认行为是什么?
仅供参考,我正在对不使用任何网络资源(仅使用 CPU 和 RAM)的分类器运行交叉验证。
答案1
简单的答案是是的但事实却更加复杂。
是的,应用程序仍将运行;它将与系统的其他进程一起恢复。但是,有一些有状态的东西,例如网络连接和图形驱动程序状态。这些需要使用外部硬件重新初始化,这可能意味着一开始会有一些额外的网络延迟,甚至需要适当的断开连接-重新连接(就像我在以太网上遇到的那样)。在特别糟糕的情况下——绝对是例外——整个桌面环境可能会崩溃并重新启动。
所以我不能保证你会发生什么。如果你的应用程序在失去网络连接时崩溃,那么可能存在问题。如果它正在进行渲染或 CUDA/OpenCL 操作,它可能会崩溃。
如果只是普通的 CPU/磁盘问题,应该没什么问题。
但是谁知道呢。计算机让我们所有人都很傻。
祝你好运。
答案2
当您暂停系统(使其进入睡眠状态)时,它会存储所有代表其当前在 RAM 中所做操作的 CPU 寄存器等,然后关闭大多数组件(保留 RAM 内容的组件和稍后再次唤醒计算机所需的组件(输入设备等))。
当您稍后再次唤醒它时,将恢复之前的状态并且计算机将从您暂停的位置继续运行。
这是主要概念,当然现实中还会发生更多,因为这一切不会在剪断手指时奇迹般地发生。有许多系统脚本等参与其中,它们在挂起之前和唤醒之后运行。
但是,除非您手动设置,否则暂停计算机将永远不会关闭任何正在运行的应用程序。在此过程中可能会出现崩溃,但通常情况下,如果它成功一次,它就会一直成功。
答案3
如果笔记本电脑睡觉(=暂停),绝对是的。唯一可能被中断的是网络连接或类似的实时事物;在这种情况下,这取决于正在运行的程序是否安全地编写为接受临时故障并恢复。
如果笔记本电脑关机,绝对不是 --- 我认为控制面板中某处有一个选项可以在这两种行为之间做出选择。
答案4
如果你想确保万无一失,你可以从控制面板中的电源选项中选择电脑在盖子关闭时不执行任何额外操作。这意味着关闭或打开盖子不会对电脑的状态产生影响。这样可以保证任何程序都不会中断运行。