'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.'

def Progress(self):

    now = time.time()
    if ((now - self.last_progress_time) <= 2):
        return
    self.last_progress_time = now
    client_utils.KeepAlive()
    if (self.nanny_controller is None):
        self.nanny_controller = client_utils.NannyController()
    self.nanny_controller.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.')
