code: def Progress(self):
      
      now = time.time()
      if now - self.last_progress_time <= 2:
        return
  
      self.last_progress_time = now
  
      # Prevent the machine from sleeping while the action is running.
      client_utils.KeepAlive()
  
      self.grr_worker.Heartbeat()
  
      user_start = self.cpu_start.user
      system_start = self.cpu_start.system
      cpu_times = self.proc.cpu_times()
      user_end = cpu_times.user
      system_end = cpu_times.system
  
      used_cpu = user_end - user_start + system_end - system_start
  
      if used_cpu > self.cpu_limit:
        self.grr_worker.SendClientAlert("Cpu limit exceeded.")
        raise CPUExceededError("Action exceeded cpu limit.")
docs: Indicate progress of the client action.
  
      This function should be called periodically during client actions that do
      not finish instantly. It will notify the nanny that the action is not stuck
      and avoid the timeout and it will also check if the action has reached its
      cpu limit.
  
      Raises:
        CPUExceededError: CPU limit exceeded.