class_docstr: Runs jobs locally as a subprocess.
  
  Args:
      submit_options (str): options appended before the command.
      resources (list[str]): list of resources that will be passed as
          SHERPA_RESOURCE environment variable. If no resource is 
          available '' will be passed.
class_docstr_tok: ["Runs","jobs","locally","as","a","subprocess",".","Args",":","submit_options","(","str",")",":","options","appended","before","the","command",".","resources","(","list","[","str","]",")",":","list","of","resources","that","will","be","passed","as","SHERPA_RESOURCE","environment","variable",".","If","no","resource","is","available","``","will","be","passed","."]
code: def kill_job(self, job_id):
      process = self.jobs.get(job_id)
      if not process:
          raise ValueError("Job not found.")
      process.terminate()
  
imports: import subprocess
  import re
  import sys
  import os
  import logging
label_desc: Use image node_id 4 for calling the LocalScheduler obj's underlying member method code with example usage: obj.kill_job(job_id) without return types