code: def _runWorker(self, jobCommand, jobID, environment):
          
          startTime = time.time()  # Time job is started
          if self.debugWorker and "_toil_worker" in jobCommand:
              # Run the worker without forking
              jobName, jobStoreLocator, jobStoreID = jobCommand.split()[1:] # Parse command
              jobStore = Toil.resumeJobStore(jobStoreLocator)
              # TODO: The following does not yet properly populate self.runningJobs so it is not possible to kill
              # running jobs in forkless mode - see the "None" value in place of popen
              info = Info(time.time(), None, killIntended=False)
              try:
                  self.runningJobs[jobID] = info
                  try:
                      toil_worker.workerScript(jobStore, jobStore.config, jobName, jobStoreID, 
                                               redirectOutputToLogFile=not self.debugWorker) # Call the worker
                  finally:
                      self.runningJobs.pop(jobID)
              finally:
                  if not info.killIntended:
                      self.outputQueue.put((jobID, 0, time.time() - startTime))
          else:
              with self.popenLock:
                  popen = subprocess.Popen(jobCommand,
                                           shell=True,
                                           env=dict(os.environ, **environment))
              info = Info(time.time(), popen, killIntended=False)
              try:
                  self.runningJobs[jobID] = info
                  try:
                      statusCode = popen.wait()
                      if statusCode != 0 and not info.killIntended:
                          log.error("Got exit code %i (indicating failure) "
                                    "from job %s.", statusCode, self.jobs[jobID])
                  finally:
                      self.runningJobs.pop(jobID)
              finally:
                  if not info.killIntended:
                      self.outputQueue.put((jobID, statusCode, time.time() - startTime))
docs: Run the jobCommand using the worker and wait for it to finish.
          The worker is forked unless it is a '_toil_worker' job and
          debugWorker is True.