o
    "j]                     @   s\   d dl Z d dlZdadd Zdd Zdd Zdd	 Zd
d ZG dd dZG dd dZ	dS )    Nc                   C   s   t d uS N)_GLOBAL_TIMERS r   r   l/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddle/distributed/fleet/utils/timer_helper.pyis_timer_initialized   s   r   c                 C   s   | du sJ | ddS ))Make sure the input variable is not None.Nz has been already initialized.r   varnamer   r   r   _ensure_var_is_not_initialized      r   c                 C   s   | dusJ | ddS )r   Nz is not initialized.r   r   r   r   r   _ensure_var_is_initialized   r   r   c                   C   s   t td tS )Ntimers)r   r   r   r   r   r   
get_timers$   s   
r   c                   C   s   t td t adS )zInitialize timers.r   N)r   r   Timersr   r   r   r   
set_timers)   s   

r   c                   @   s:   e Zd ZdZdd Zdd Zdd Zdd	 ZdddZdS )_TimerzTimer.c                 C   s    || _ d| _d| _t | _d S )N        F)r
   elapsed_started_time
start_timeselfr
   r   r   r   __init__3   s   z_Timer.__init__c                 C   s.   | j rJ dtjj  t | _d| _ dS )zStart the timer.ztimer has already startedTN)r   paddledevicecudasynchronizer   r   r   r   r   r   start9   s   

z_Timer.startc                 C   s<   | j sJ dtjj  |  jt | j 7  _d| _ dS )zStop the timers.ztimer is not started.FN)r   r   r   r   r   r   r   r   r   r   r   r   stop@   s   
z_Timer.stopc                 C   s   d| _ d| _dS )zReset timer.r   FN)r   r   r   r   r   r   resetG   s   
z_Timer.resetTc                 C   s6   | j }| j r
|   | j}|r|   |r|   |S )zCalculate the elapsed time.)r   r!   r   r"   r    )r   r"   r   r   r   r   r   elapsedL   s   z_Timer.elapsedN)T)	__name__
__module____qualname____doc__r   r    r!   r"   r#   r   r   r   r   r   0   s    r   c                   @   s*   e Zd ZdZdd Zdd Zddd	Zd
S )r   zGroup of timers.c                 C   s
   i | _ d S r   )r   r   r   r   r   r   `   s   
zTimers.__init__c                 C   s"   || j vrt|| j |< | j | S r   )r   r   r   r   r   r   __call__c   s   

zTimers.__call__      ?Tc                 C   sZ   |dksJ d}|D ]}| j | j|dd | }|d| d|d7 }q
t|dd	 d
S )zLog a group of timers.r   z	time (ms))r"   g     @@z | z: z.2fT)flushN)r   r#   print)r   namesZ
normalizerr"   stringr
   Zelapsed_timer   r   r   logh   s   z
Timers.logN)r)   T)r$   r%   r&   r'   r   r(   r.   r   r   r   r   r   ]   s
    r   )
r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   -