Si usted está en un sistema UNIX, puede utilizar os.fork:
import os
import time
pid=os.fork()
if pid:
# parent
while True:
print("I'm the parent")
time.sleep(0.5)
else:
# child
while True:
print("I'm just a child")
time.sleep(0.5)
La ejecución de este crea dos procesos. Puedes matar al padre sin matar al niño. Por ejemplo, al ejecutar secuencia de comandos que veremos algo como:
% script.py
I'm the parent
I'm just a child
I'm the parent
I'm just a child
...
Detener el guión con ctrl-Z:
^Z
[1]+ Stopped script.py
Encuentra el número identificador de proceso para los padres. Será el menor de los dos números de identificación de proceso, ya que el padre fue primero:
% ps axuw | grep script.py
unutbu 6826 0.1 0.1 33792 6388 pts/24 T 15:09 0:00 python /home/unutbu/pybin/script.py
unutbu 6827 0.0 0.1 33792 4352 pts/24 T 15:09 0:00 python /home/unutbu/pybin/script.py
unutbu 6832 0.0 0.0 17472 952 pts/24 S+ 15:09 0:00 grep --color=auto script.py
Mata al proceso padre:
% kill 6826
Restaurar script.py al primer plano:
% fg
script.py
Terminated
Verá que el proceso hijo todavía se está ejecutando:
% I'm just a child
I'm just a child
I'm just a child
...
matar al niño (en una nueva terminal) con
% kill 6827
Gracias, al parecer, no me acerqué lo suficiente al RTFM. – JacquesB