import subprocess,time,csv,sys,json,plistlib from pathlib import Path root=Path(__file__).parent pid=subprocess.check_output(['pgrep','-x','PauseTest'],text=True).strip() assert len(pid.splitlines())==1 run,state=sys.argv[1:3] out=root/'measurements.csv' def snap(): raw=subprocess.check_output(['ps','-p',pid,'-o','time=,rss=,state='],text=True).strip().split() parts=[float(x) for x in raw[0].split(':')] cpu=sum(v*60**i for i,v in enumerate(reversed(parts))) return time.monotonic(),cpu,int(raw[1]),raw[2] new=not out.exists() with out.open('a') as f: w=csv.writer(f) if new:w.writerow(['run','condition','sample','wall_seconds','cpu_seconds','cpu_percent_one_core','rss_kib','process_state']) a=snap() for i in range(1,13): time.sleep(5);b=snap();dt=b[0]-a[0];dc=b[1]-a[1] w.writerow([run,state,i,round(dt,4),round(dc,4),round(dc/dt*100,4),b[2],b[3]]);f.flush();a=b print(run,state,'completed',flush=True)