code: def next_checkpoint(model_dir, timeout_mins=240):
    
    last_ckpt = None
    timeout_secs = None
    if timeout_mins != -1:
      timeout_secs = timeout_mins * 60
    while True:
      last_ckpt = tf.contrib.training.wait_for_new_checkpoint(
          model_dir, last_ckpt, seconds_to_sleep=60, timeout=timeout_secs)
  
      if last_ckpt is None:
        tf.logging.info(
            "Eval timeout: no new checkpoints within %dm" % timeout_mins)
        break
  
      yield last_ckpt
docs: Yields successive checkpoints from model_dir.
  
    Args:
      model_dir: The directory in which checkpoints are saved.
      timeout_mins: The maximum amount of time in minutes to wait
                    between checkpoints. Set this to -1 to wait indefinitely.
    Yields:
      last_ckpt: a new checkpoint path, or None if the timeout was reached.