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.