电脑唤醒后,Python程序再次开始运行?


15

我正在运行一个需要几个小时才能完成的python程序。如果我关闭笔记本电脑的机盖(即,让它进入睡眠状态),那么当我重新打开笔记本电脑时,程序会再次启动吗?已经有几个小时了,我必须尽快离开(所以我需要关闭笔记本电脑),但是我不想再次开始该过程。程序会从完全相同的点开始吗?Ubuntu 16.04的默认行为是什么?

Fyi,我正在为不使用任何网络资源(仅使用CPU和RAM)的分类器运行交叉验证。

Answers:


29

简单的答案是肯定的,但事实要复杂一些。

是的,该应用程序仍将运行;它会在系统的其余过程中恢复。但是,还是有状态的事情,例如网络连接和图形驱动程序状态。这些需要使用外部硬件重新初始化,这可能意味着开始时会增加一些网络延迟,或者甚至是适当的断开连接-重新连接(就像我在以太网上发生的那样)。在特别糟糕的情况下(绝对是该规则的例外),整个桌面环境可能崩溃并重新启动。

所以我不能保证会发生什么事。如果您的应用程序失去网络连接而崩溃,则可能是问题。如果正在做渲染或CUDA / OpenCL之类的东西,它可能会损坏。

如果只是普通的CPU /磁盘内容,那应该没问题。
但是谁知道呢。电脑使我们所有人愚弄。
祝好运。


没错,打开笔记本电脑后,我的程序又重新开始了,并且最终完成了预期的运行。OT:既然花费的时间对我来说很重要(它返回了23个小时),您认为这是指运行时间还是结束时间与开始时间之间的差异?还是无法分辨?
BourbonCreams

您的意思是您使用time内置功能运行它?例如time ./myscript.py
Oli

不,我使用的方法(cross_validation.cross_val_score)的参数verbose设置为True,会在最终精度和运行时间输出。
BourbonCreams

“计算机使我们所有人愚弄。” 如此真实!
帕迪·兰道

6

当您挂起系统(使其进入睡眠状态)时,它将存储所有表示其当前在RAM中执行的操作的CPU寄存器等,然后关闭除保留RAM内容和唤醒计算机所需的那些组件之外的大多数组件的电源稍后再重新打开(输入设备等)。

当您稍后再次唤醒它时,以前的状态将恢复,并且计算机将完全在您将其挂起的位置继续运行。

那是主要概念,当然在现实中还会发生更多的事情,因为在手指划伤时这一切并不是神奇地发生的。有很多涉及挂起之前和唤醒之后运行的系统脚本等。

但是,除非手动进行设置,否则挂起计算机将永远不会关闭任何正在运行的应用程序。在此过程中发生崩溃的风险很小,但是正常情况下,一旦运行一次,它将始终运行。


2

如果笔记本电脑进入睡眠状态(=挂起),肯定可以。唯一可以中断的是网络连接或类似的实时事件。在这种情况下,取决于是否安全地编写了正在运行的程序以接受临时故障并进行恢复。

我认为,如果笔记本电脑关闭电源,则绝对不会---控制面板中的某个位置可以决定两种行为。


2

如果需要确定的话,可以从控制面板中的电源选项中选择关闭机箱盖时不执行任何其他操作。这意味着合上或打开机盖不会影响计算机的状态。这样可以保证任何程序都不会中断运行。


2
但是您的笔记本电脑可能没电了。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.