max_lat_accel.py: use parallel processing (#34936)

* use run_across_segments

* disable tqdm
pull/34937/head
Shane Smiskol 1 month ago committed by GitHub
parent e607cbe5a2
commit e652f435f9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 3
      selfdrive/debug/max_lat_accel.py
  2. 4
      tools/lib/logreader.py

@ -2,6 +2,7 @@
import argparse import argparse
import numpy as np import numpy as np
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from functools import partial
from tqdm import tqdm from tqdm import tqdm
from typing import NamedTuple from typing import NamedTuple
from openpilot.tools.lib.logreader import LogReader from openpilot.tools.lib.logreader import LogReader
@ -98,7 +99,7 @@ if __name__ == '__main__':
print('WARNING: Treating route as qlog!') print('WARNING: Treating route as qlog!')
print('Finding events...') print('Finding events...')
events += find_events(lr, extrapolate=args.extrapolate, qlog=qlog) events += lr.run_across_segments(8, partial(find_events, extrapolate=args.extrapolate, qlog=qlog), disable_tqdm=True)
print() print()
print(f'Found {len(events)} events') print(f'Found {len(events)} events')

@ -307,11 +307,11 @@ class LogReader:
def _run_on_segment(self, func, i): def _run_on_segment(self, func, i):
return func(self._get_lr(i)) return func(self._get_lr(i))
def run_across_segments(self, num_processes, func, desc=None): def run_across_segments(self, num_processes, func, disable_tqdm=False, desc=None):
with multiprocessing.Pool(num_processes) as pool: with multiprocessing.Pool(num_processes) as pool:
ret = [] ret = []
num_segs = len(self.logreader_identifiers) num_segs = len(self.logreader_identifiers)
for p in tqdm.tqdm(pool.imap(partial(self._run_on_segment, func), range(num_segs)), total=num_segs, desc=desc): for p in tqdm.tqdm(pool.imap(partial(self._run_on_segment, func), range(num_segs)), total=num_segs, disable=disable_tqdm, desc=desc):
ret.extend(p) ret.extend(p)
return ret return ret

Loading…
Cancel
Save