

@gen.coroutine
@util.debuglog
def manage_processes(self):
    'Manage processes.'
    if self.is_stopped():
        return
    for process in list(self.processes.values()):
        if (process.status in (DEAD_OR_ZOMBIE, UNEXISTING)):
            self.processes.pop(process.pid)
    if self.max_age:
        (yield self.remove_expired_processes())
    if ((len(self.processes) < self.numprocesses) and (not self.is_stopping())):
        if self.respawn:
            (yield self.spawn_processes())
        elif ((not len(self.processes)) and (not self.on_demand)):
            (yield self._stop())
    if (len(self.processes) > self.numprocesses):
        processes_to_kill = []
        for process in sorted(self.processes.values(), key=(lambda process: process.started), reverse=True)[self.numprocesses:]:
            if (process.status in (DEAD_OR_ZOMBIE, UNEXISTING)):
                i.processes.pop(process.pid)
            else:
                processes_to_kill.append(process)
        removes = (yield [self.kill_process(process) for process in processes_to_kill])
        for (i, process) in enumerate(processes_to_kill):
            if removes[i]:
                self.processes.pop(process.pid)

dataset/ETHPy150Open circus-tent/circus/circus/watcher.py Watcher.manage_processes/VarMisuse@245/300 `self`->`i`