in submitit/local/local.py [0:0]
def wait(self, freq: int = 24) -> Sequence[Optional[int]]:
"""Waits for all tasks to finish or to time-out.
Returns
-------
Sequence[Optional[int]]:
Exit codes of each task.
Some tasks might still have not exited, but they will have received the "timed-out" signal.
"""
assert self.tasks, "Nothing to do!"
timeout = freq * self.timeout_s
almost_timeout = freq * (self.timeout_s - self.signal_delay_s)
# safer to keep a for loop :)
for step in range(timeout):
exit_codes = [t.poll() for t in self.tasks]
if all(e is not None for e in exit_codes):
return exit_codes
if step == almost_timeout:
self._forward_signal(signal.SIGUSR1)
time.sleep(1.0 / freq)
return [t.poll() for t in self.tasks]