'Update the status of the job lists.
This method moves finished jobs to one of two lists:
- self.completed: jobs which completed successfully
- self.dead: jobs which finished but died.
It also copies those jobs to corresponding _report lists.  These lists
are used to report jobs completed/dead since the last update, and are
then cleared by the reporting function after each call.'

def _update_status(self):

    (srun, scomp, sdead) = (self._s_running, self._s_completed, self._s_dead)
    (running, completed, dead) = (self._running, self._completed, self._dead)
    for (num, job) in enumerate(running):
        stat = job.stat_code
        if (stat == srun):
            continue
        elif (stat == scomp):
            completed.append(job)
            self._comp_report.append(job)
            running[num] = False
        elif (stat == sdead):
            dead.append(job)
            self._dead_report.append(job)
            running[num] = False
    running[:] = filter(None, running)
