Quelle est la différence entre ces deux options pour démarrer un nouveau processus avec subprocess.Popen
pour python3.2+
sous Linux
:Différence entre subprocess.Popen preexec_fn et start_new_session en python
proc = subprocess.Popen(args, ..., preexec_fn=os.setsid) # 1
proc = subprocess.Popen(args, ..., start_new_session=True) # 2
je besoin de ce que je dois mettre un groupe de processus ID d'avoir la possibilité de tuer à la fois ce processus et tous ses enfants. Il est ensuite utilisé dans le cas si le processus temps d'exécution dépasse certain seuil:
try:
out, err = proc.communicate(timeout=time_max)
except subprocess.TimeoutExpired:
os.killpg(os.getpgid(proc.pid), signal.SIGTERM)
J'ai testé mon code avec les options (les deux #1
& #2
) et ils semblent tous deux travailler ok pour moi. Mais je me demande quelle est la meilleure option ici - celle avec preexec_fn
ou celle avec start_new_session
?