You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							36 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							36 lines
						
					
					
						
							1.1 KiB
						
					
					
				| #!/usr/bin/env python3
 | |
| import sys
 | |
| import time
 | |
| import numpy as np
 | |
| import datetime
 | |
| from collections.abc import MutableSequence
 | |
| from collections import defaultdict
 | |
| 
 | |
| import cereal.messaging as messaging
 | |
| 
 | |
| 
 | |
| 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():
 | |
|         msgs = messaging.drain_sock(sock)
 | |
|         for m in msgs:
 | |
|           ts[s].append(m.logMonoTime / 1e6)
 | |
| 
 | |
|         if len(ts[s]) > 2:
 | |
|           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)
 | |
| 
 |