code: def build_from_job_list(scheme_files, templates, base_output_dir):
      
      queue = Queue()
      for scheme in scheme_files:
          queue.put(scheme)
  
      if len(scheme_files) < 40:
          thread_num = len(scheme_files)
      else:
          thread_num = 40
  
      threads = []
      for _ in range(thread_num):
          thread = Thread(target=build_single_worker,
                          args=(queue, templates, base_output_dir))
          thread.start()
          threads.append(thread)
  
      queue.join()
  
      for _ in range(thread_num):
          queue.put(None)
  
      for thread in threads:
          thread.join()
docs: Use $scheme_files as a job lists and build base16 templates using
      $templates (a list of TemplateGroup objects).