¿El programa Python comienza a ejecutarse nuevamente después de que la PC se despierta?

15

Estoy ejecutando un programa de Python que tarda unas horas en completarse. Si cierro la tapa de mi computadora portátil (es decir, la pongo a dormir), ¿volverá a comenzar el programa cuando vuelva a abrir mi computadora portátil? Ya han pasado unas horas y tengo que irme pronto (así que necesito cerrar mi computadora portátil) pero no quiero comenzar el proceso nuevamente. ¿Comenzará el programa exactamente desde el mismo punto? ¿Cuál es el comportamiento predeterminado en Ubuntu 16.04?

Fyi, estoy ejecutando una validación cruzada para un clasificador que no utiliza ningún recurso de red, solo CPU y RAM.

BourbonCreams
fuente

Respuestas:

29

La respuesta simple es sí, pero la verdad es un poco más complicada.

Sí, la aplicación seguirá ejecutándose; se reanudará con el resto de los procesos del sistema. Sin embargo, hay cosas con estado como conexiones de red y estados de controladores de gráficos. Estos deben reinicializarse con hardware externo y eso puede significar una latencia de red adicional para comenzar, o incluso una desconexión-reconexión adecuada (como me sucede en Ethernet). En situaciones particularmente malas, definitivamente excepciones a la regla, todo el entorno de escritorio puede bloquearse y reiniciarse.

Así que no puedo garantizar lo que te sucederá. Si su aplicación fallará si pierde la conectividad de red, puede haber un problema. Si está haciendo renderizado o cosas de CUDA / OpenCL, podría romperse.

Si solo se trata de una simple CPU / disco, debería estar bien.
Pero quién sabe con certeza. Las computadoras nos engañan a todos.
Buena suerte.

Oli
fuente
Tenías razón, mi programa comenzó de nuevo después de que abrí mi computadora portátil y finalmente terminó de ejecutarse como se esperaba. OT: Dado que el tiempo que me llevó (regresó 23 horas), ¿cree que se refiere al tiempo transcurrido o la mera diferencia entre el tiempo final y el tiempo inicial? ¿O no es posible saberlo?
BourbonCreams
¿Quieres decir que lo timecorriste con el incorporado? por ejemplotime ./myscript.py
Oli
No, el método que estoy usando (cross_validation.cross_val_score) con el parámetro detallado establecido en True se imprime al final de la precisión y el tiempo de ejecución.
BourbonCreams
"Las computadoras nos engañan a todos". ¡Tan verdadero!
Paddy Landau
6

Cuando suspende el sistema (lo pone en suspensión), almacena todos sus registros de CPU, etc. que representan lo que está haciendo actualmente en su RAM y luego apaga la mayoría de los componentes, excepto los que conservan el contenido de RAM y los que son necesarios para activar la computadora arriba de nuevo más tarde (dispositivos de entrada, etc.).

Cuando lo despiertas más tarde, el estado anterior se restaura y la computadora continúa exactamente en el punto donde lo suspendiste.

Ese es el concepto principal, por supuesto, en realidad suceden más porque todo esto no ocurre mágicamente al cortar los dedos. Hay muchas secuencias de comandos del sistema, etc. que se ejecutan antes de suspender y después de despertar.

Sin embargo, a menos que configure manualmente algo para hacer eso, suspender la computadora nunca cerrará ninguna aplicación en ejecución. Existe un pequeño riesgo de que algo falle en el proceso, pero normalmente si funcionó una vez, siempre funciona.

Byte Commander
fuente
2

Si la computadora portátil se va a dormir (= suspender), definitivamente sí. Lo único que puede interrumpirse son las conexiones de red o algo similar en tiempo real; en ese caso, depende de si el programa en ejecución se escribe de manera segura para aceptar fallas temporales y recuperarse.

Si la computadora portátil se apaga , definitivamente no --- hay una opción en algún lugar del Panel de Control para decidir entre los dos comportamientos, creo.

Rmano
fuente
2

Si quiere estar seguro, puede seleccionar su computadora para no hacer nada extra cuando la tapa está cerrada, desde las opciones de energía en el panel de control. Eso significa que cerrar o abrir la tapa no tendrá ningún efecto en el estado de su computadora. De esta forma, se garantiza que cualquier programa se ejecutará sin interrupciones.

atakanyenel
fuente
2
Pero su computadora portátil puede quedarse sin batería.
gato