|
|
|
@ -1,17 +1,19 @@ |
|
|
|
|
#!/usr/bin/env python3 |
|
|
|
|
|
|
|
|
|
import sys |
|
|
|
|
import time |
|
|
|
|
import numpy as np |
|
|
|
|
import datetime |
|
|
|
|
from collections.abc import MutableSequence |
|
|
|
|
from collections import defaultdict, deque |
|
|
|
|
from collections import defaultdict |
|
|
|
|
|
|
|
|
|
import cereal.messaging as messaging |
|
|
|
|
|
|
|
|
|
socks = {s: messaging.sub_sock(s, conflate=False) for s in sys.argv[1:]} |
|
|
|
|
ts: defaultdict[str, MutableSequence[float]] = defaultdict(lambda: deque(maxlen=100)) |
|
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
|
ts: defaultdict[str, MutableSequence[float]] = defaultdict(list) |
|
|
|
|
socks = {s: messaging.sub_sock(s, conflate=False) for s in sys.argv[1:]} |
|
|
|
|
try: |
|
|
|
|
st = time.monotonic() |
|
|
|
|
while True: |
|
|
|
|
print() |
|
|
|
|
for s, sock in socks.items(): |
|
|
|
@ -20,6 +22,15 @@ if __name__ == "__main__": |
|
|
|
|
ts[s].append(m.logMonoTime / 1e6) |
|
|
|
|
|
|
|
|
|
if len(ts[s]) > 2: |
|
|
|
|
d = np.diff(ts[s]) |
|
|
|
|
d = np.diff(ts[s])[-100:] |
|
|
|
|
print(f"{s:25} {np.mean(d):7.2f} {np.std(d):7.2f} {np.max(d):7.2f} {np.min(d):7.2f}") |
|
|
|
|
time.sleep(1) |
|
|
|
|
except KeyboardInterrupt: |
|
|
|
|
print("\n") |
|
|
|
|
print("="*5, "timing summary", "="*5) |
|
|
|
|
for s, sock in socks.items(): |
|
|
|
|
msgs = messaging.drain_sock(sock) |
|
|
|
|
if len(ts[s]) > 2: |
|
|
|
|
d = np.diff(ts[s]) |
|
|
|
|
print(f"{s:25} {np.mean(d):7.2f} {np.std(d):7.2f} {np.max(d):7.2f} {np.min(d):7.2f}") |
|
|
|
|
print("="*5, datetime.timedelta(seconds=time.monotonic()-st), "="*5) |
|
|
|
|