Files

21 lines
664 B
Python

#!/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)