code: def killBatchJobs(self, jobIDs):
          
          while True:
              for jobID in jobIDs:
                  if jobID in self.runningJobs:
                      self.runningJobs.remove(jobID)
                  exitValue = self._runParasol(['remove', 'job', str(jobID)],
                                               autoRetry=False)[0]
                  logger.debug("Tried to remove jobID: %i, with exit value: %i" % (jobID, exitValue))
              runningJobs = self.getIssuedBatchJobIDs()
              if set(jobIDs).difference(set(runningJobs)) == set(jobIDs):
                  break
              logger.warn( 'Tried to kill some jobs, but something happened and they are still '
                           'going, will try againin 5s.')
              time.sleep(5)
          # Update the CPU usage, because killed jobs aren't written to the results file.
          for jobID in jobIDs:
              if jobID in list(self.jobIDsToCpu.keys()):
                  self.usedCpus -= self.jobIDsToCpu.pop(jobID)
docs: Kills the given jobs, represented as Job ids, then checks they are dead by checking
          they are not in the list of issued jobs.