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 get_status(self, job_id):
      process = self.jobs.get(job_id)
      if not process:
          raise ValueError("Job not found.")
      status = process.poll()
      if status is None:
          return _JobStatus.running
      else:
          if job_id in self.resource_by_job:
              resource = self.resource_by_job.pop(job_id)
              self.resources.append(resource)
  
          if job_id in self.output_files:
              f = self.output_files.pop(process.pid)
              f.close()
          return self.decode_status.get(status, _JobStatus.other)
  
imports: import subprocess
  import re
  import sys
  import os
  import logging
label_desc: Use image node_id 3 for calling the LocalScheduler obj's underlying member method code with example usage: obj.get_status(job_id) and returns: _JobStatus, self