SyntheticMDProductions's picture
Some of Adams structure
e0265b9 verified
Raw
History Blame Contribute Delete
673 Bytes
from __future__ import annotations
import subprocess
def set_process_tree_paused(process: subprocess.Popen, paused: bool) -> bool:
"""Suspend/resume a trainer process tree when psutil is available."""
try:
import psutil
parent = psutil.Process(process.pid)
children = parent.children(recursive=True)
targets = [*children, parent] if paused else [parent, *children]
for target in targets:
try:
target.suspend() if paused else target.resume()
except (psutil.NoSuchProcess, psutil.AccessDenied):
continue
return True
except Exception:
return False