#!/usr/bin/env python3 """Measure child CPU/wall time without depending on GNU time.""" import pathlib import resource import subprocess import sys import time before = resource.getrusage(resource.RUSAGE_CHILDREN) started = time.monotonic() result = subprocess.run(sys.argv[2:], check=False) elapsed = time.monotonic() - started usage = resource.getrusage(resource.RUSAGE_CHILDREN) user = usage.ru_utime - before.ru_utime system = usage.ru_stime - before.ru_stime pathlib.Path(sys.argv[1]).write_text( f"cpu_user={user:.3f} cpu_system={system:.3f} wall={elapsed:.3f} " f"cpu_percent={(user + system) / elapsed * 100:.1f}%\n" ) sys.exit(result.returncode)