[docs]classTimeLimit:"""TimeLimit handler can be used to control training time for computing environments where session time is limited. Timer starts when handler is created and not training started. This handler gracefully terminates the training if time passed in the training exceeds a limit. Args: limit_sec: Maximum time before training terminates (in seconds). Defaults to 28800. Examples: .. code-block:: python from ignite.engine import Events from ignite.handlers import TimeLimit handler = TimeLimit() # 8 hours of training trainer.add_event_handler(Events.ITERATION_COMPLETED, handler) .. versionadded:: 0.4.3 """def__init__(self,limit_sec:Optional[int]=28800):ifnotisinstance(limit_sec,int):raiseTypeError("Argument limit_sec should be an integer.")iflimit_sec<=0:raiseValueError("Argument limit_sec should be a positive integer.")self.limit_sec=limit_secself.start_time=time.time()self.logger=setup_logger(__name__+"."+self.__class__.__name__)def__call__(self,engine:Engine)->None:elapsed_time=time.time()-self.start_timeifelapsed_time>self.limit_sec:self.logger.info("Reached the time limit: {} sec. Stop training".format(self.limit_sec))engine.terminate()