def _iter(self):
sleeped = 0 # measure time w/o messaging
# Waiting for any input
while not self.comm.Iprobe(source=MPI.ANY_SOURCE, tag=MPI.ANY_TAG):
if sleeped == 0.5:
secs_since_start = round(time.time() - self.start, 1)
logger.info('Sleeping @ %s s.', secs_since_start)
# TODO: stats!
# observe ram usage
# observe free disk space
# observe ...
# make sure executed every 60? seconds
if self.numworkers == 0:
self._shutdown()
# TODO: think about better use of sleeped
sleeped += self._manage_io()
if sleeped > 0.5:
logger.info("Slept for %s seconds.", sleeped - 0.5)
# TODO: catch mpi.send errors properly
try:
self._process_mpi()
except IndexError as e:
logger.info('IndexError happend: %s', e)
评论列表
文章目录