Speed up YAML parsing with CSafeLoader (#24958)

Use CSafeLoader
pull/24962/head
Shane Smiskol 3 years ago committed by GitHub
parent 6721f0ef57
commit 10fb2b9456
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      selfdrive/car/interfaces.py

@ -26,16 +26,16 @@ TORQUE_OVERRIDE_PATH = os.path.join(BASEDIR, 'selfdrive/car/torque_data/override
TORQUE_SUBSTITUTE_PATH = os.path.join(BASEDIR, 'selfdrive/car/torque_data/substitute.yaml') TORQUE_SUBSTITUTE_PATH = os.path.join(BASEDIR, 'selfdrive/car/torque_data/substitute.yaml')
def get_torque_params(candidate, default=float('NaN')): def get_torque_params(candidate):
with open(TORQUE_SUBSTITUTE_PATH) as f: with open(TORQUE_SUBSTITUTE_PATH) as f:
sub = yaml.load(f, Loader=yaml.FullLoader) sub = yaml.load(f, Loader=yaml.CSafeLoader)
if candidate in sub: if candidate in sub:
candidate = sub[candidate] candidate = sub[candidate]
with open(TORQUE_PARAMS_PATH) as f: with open(TORQUE_PARAMS_PATH) as f:
params = yaml.load(f, Loader=yaml.FullLoader) params = yaml.load(f, Loader=yaml.CSafeLoader)
with open(TORQUE_OVERRIDE_PATH) as f: with open(TORQUE_OVERRIDE_PATH) as f:
override = yaml.load(f, Loader=yaml.FullLoader) override = yaml.load(f, Loader=yaml.CSafeLoader)
# Ensure no overlap # Ensure no overlap
if sum([candidate in x for x in [sub, params, override]]) > 1: if sum([candidate in x for x in [sub, params, override]]) > 1:
@ -47,7 +47,7 @@ def get_torque_params(candidate, default=float('NaN')):
out = params[candidate] out = params[candidate]
else: else:
raise NotImplementedError(f"Did not find torque params for {candidate}") raise NotImplementedError(f"Did not find torque params for {candidate}")
return {key:out[i] for i, key in enumerate(params['legend'])} return {key: out[i] for i, key in enumerate(params['legend'])}
# generic car and radar interfaces # generic car and radar interfaces

Loading…
Cancel
Save