← retour aux snippets

subprocess: exécuter avec timeout et vérification

Lancer un processus, vérifier le code retour et imposer un timeout.

objectif

Lancer un processus, vérifier le code retour et imposer un timeout.

code minimal

import subprocess, sys

cp = subprocess.run([sys.executable, "-c", "print(42)"], capture_output=True, text=True, check=True, timeout=5)
print(cp.stdout.strip())  # attendu: 42

utilisation

import subprocess, sys
r = subprocess.run([sys.executable, "-c", "import time; time.sleep(0.1); print('ok')"], capture_output=True, text=True, timeout=1)
print(r.returncode == 0 and r.stdout.strip() == "ok")

variante(s) utile(s)

import subprocess, sys
try:
    subprocess.run([sys.executable, "-c", "import time; time.sleep(2)"], timeout=0.1)
except subprocess.TimeoutExpired:
    print(True)  # timeout attrapé

notes

  • check=True lève CalledProcessError si le retour != 0.
  • Toujours capturer stdout/stderr si vous avez besoin des sorties.