code: def run_list(tests, config: RunConfig):
      n_tests = len(tests)
      to_run = []
      for i, name in enumerate(tests):
          b = _registry.get(name)
          if not b:
              raise ValueError(f"test {name!r} not found")
          if config.dry_run:
              logging.info(f"found benchmark {name}")
          else:
              to_run.append(b)
      resources = {rg for b in to_run for rg in b.groups}
      ensure_resources(config.data_dir, resources)
      for i, b in enumerate(to_run):
          initialize(config)
          _run(b, config, f"[{i + 1}/{n_tests}] ")
          try:
              stop()
          except Exception as e:  # pylint: disable=broad-except
              logging.error(f"error while stopping session: {e}")
  
imports: import timeit
  import contextlib
  import hail
  import logging
  import os
  import re
  import shutil
  import signal
  from py4j.protocol import Py4JError
  from .resources import all_resources
label_desc: Use image node_id 14 for calling a global function with example usage: run_list(tests, config) without return types