Proceso de fondo en Python

Rana Hasnain Khan 10 octubre 2023
  1. Proceso de fondo en Python
  2. Proceso en segundo plano en Windows en Python
  3. Proceso en segundo plano en Linux o Mac en Python
Proceso de fondo en Python

Presentaremos cómo ejecutar scripts de Python en segundo plano como un proceso en segundo plano. También presentaremos pythonw en Python.

Proceso de fondo en Python

En el mundo de la automatización y la ciencia de datos, hemos avanzado a tal nivel que podemos automatizar fácilmente nuestras tareas diarias, y pueden procesarse en el backend sin siquiera actualizarnos (a menos que lo hayamos programado para actualizarnos).

Este artículo le enseñará cómo crear un script y ejecutarlo como un proceso en segundo plano.

Los procesos en segundo plano se ejecutan una vez y, después de eso, se procesan automáticamente cuando iniciamos una computadora y se detienen cuando la apagamos.

También podemos detener los procesos en segundo plano yendo al administrador de tareas o usando el comando Python para eliminar el proceso usando su ID.

Proceso en segundo plano en Windows en Python

Hay dos formas diferentes de ejecutar secuencias de comandos de Python como un proceso en segundo plano; un método es usar pythonw, que se usa para ejecutar los scripts de Python como un proceso en segundo plano en Windows.

Usaremos pythonw para ejecutar nuestro script de Python como un proceso en segundo plano. Pythonw se usa para ejecutar los scripts de Python sin usar la ventana de terminal.

La sintaxis para ejecutar cualquier secuencia de comandos de Python sin usar la ventana del terminal se encuentra a continuación.

pythonw backgroundprocess.py

Podemos reemplazar backgroundprocess.py con el nombre del archivo que queremos ejecutar como proceso en segundo plano en el comando anterior.

Proceso en segundo plano en Linux o Mac en Python

Para ejecutar secuencias de comandos de Python como un proceso en segundo plano en Linux o Mac, usamos el operador & al final del comando, lo que hará que se ejecute como un proceso en segundo plano.

La sintaxis para ejecutar cualquier secuencia de comandos de Python como un proceso en segundo plano en Linux o Mac se encuentra a continuación.

# python
python backgroundprocess.py &

Podemos reemplazar backgroundprocess.py con el nombre del archivo que queremos ejecutar como proceso en segundo plano en el comando anterior.

Una vez que nuestro script se ejecuta como un proceso en segundo plano, podemos verificar la ID del proceso para detener el proceso en segundo plano cuando queramos. Podemos usar el siguiente comando en Windows para finalizar el proceso que acabamos de iniciar.

kill -9 {{process id}}

Si queremos eliminar el proceso en dispositivos Linux o Mac, podemos ejecutar el siguiente comando.

kill -9 {{process id}} &

En los comandos anteriores, -9 significa que queremos terminar el proceso lo antes posible. Entonces, usar este comando matará el proceso cuya identificación proporcionaremos dentro de las llaves.

Ahora, si creamos una secuencia de comandos importante para la que queremos verificar cómo funciona y obtener una actualización sobre la secuencia de comandos que estamos ejecutando como un proceso en segundo plano, podemos registrar o vaciar la salida de esa secuencia de comandos dentro de otro archivo usando el simple dominio.

El comando para registrar la salida de nuestro proceso en segundo plano se muestra a continuación.

pythonw backgroundprocess.py > backgroundlog

Si queremos registrar el resultado de nuestro proceso en segundo plano en dispositivos Linux o Mac, podemos usar el siguiente comando a continuación.

# python
python backgroundprocess.py > backgroundlog &

Una cosa importante a tener en cuenta es que la salida que genera nuestro proceso en segundo plano se guardará primero en la memoria intermedia hasta que se detenga el proceso en segundo plano. Por lo tanto, solo podemos obtener el registro o el vaciado de la salida de nuestros procesos en segundo plano una vez que hayamos detenido el proceso.

Pero, ¿y si no podemos detener el proceso en segundo plano porque puede correr el riesgo de perder algunos datos? Hay otra forma de registrar la salida directamente en el archivo sin guardarlo primero en una memoria intermedia.

Podemos usar el siguiente comando.

pythonw -u backgroundprocess.py > backgroundlog

Si queremos registrar la salida en un archivo directamente, podemos usar este comando en dispositivos Linux o Mac, como se muestra a continuación.

# python
python -u backgroundprocess.py > backgroundlog &

El comando anterior ahora agregará directamente la salida en nuestro archivo backgroundlog. Pero todavía tenemos que mantener nuestra terminal abierta para obtener la salida.

Si cerramos la terminal antes de que se complete nuestro proceso en segundo plano, todos los procesos se detendrán. Se colgarán todos los procesos que estábamos ejecutando.

Python siempre tiene soluciones para cada tipo de problema. Hay otro comando conocido como nohup.

Este comando se asegura de que nuestros procesos en segundo plano estén completos sin ninguna interferencia.

Incluso si cerramos la terminal principal, aún se asegurará de que nuestros procesos en segundo plano estén funcionando. La sintaxis para usar el comando nohup se muestra a continuación.

nohup python -u backgroundprocess.py

El ejemplo anterior muestra que olvidamos registrar la salida en otro archivo para verificar cuando sea necesario. No olvidamos que el comando nohup genera automáticamente un registro y lo almacena en un archivo para ver todos los registros mientras se ejecuta nuestro proceso en segundo plano.

El comando nohup almacenará todos los registros en el archivo nohup.out. Si queremos matar este proceso, podemos usar fácilmente el comando matar que usamos anteriormente para matar este proceso.

Pero si no recordamos el ID del proceso que queremos eliminar, podemos usar otro comando para tomar el nombre del archivo que estamos ejecutando como un proceso en segundo plano. Y encontrará la ID del proceso y usará el comando matar para matar el proceso.

La sintaxis de este comando se muestra a continuación.

ps ax | grep backgroundprocess.py
Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn

Artículo relacionado - Python Process