o
    i\                     @   s*   d dl Z d dlZd dlZG dd dZdS )    Nc                   @   sB   e Zd ZdZddddZdedB fddZdd	d
ZdddZdS )	FileBatonz0A primitive, file-based synchronization utility.皙?Nreturnc                 C   s   || _ || _d| _|| _dS )an  
        Create a new :class:`FileBaton`.

        Args:
            lock_file_path: The path to the file used for locking.
            wait_seconds: The seconds to periodically sleep (spin) when
                calling ``wait()``.
            warn_after_seconds: The seconds to wait before showing
                lock file path to warn existing lock file.
        N)lock_file_pathwait_secondsfdwarn_after_seconds)selfr   r   r    r
   X/sda-disk/www/egybert/egybert_env/lib/python3.10/site-packages/torch/utils/file_baton.py__init__
   s   
zFileBaton.__init__c                 C   s4   zt | jt jt jB | _W dS  ty   Y dS w )z
        Try to atomically create a file under exclusive access.

        Returns:
            True if the file could be created, else False.
        TF)osopenr   O_CREATO_EXCLr   FileExistsErrorr	   r
   r
   r   try_acquire   s   zFileBaton.try_acquirec                 C   s   d}t   }tj| jr>t | j | jdur5t   | | jkr5|s5tj	d| j d| j ddd d}tj| jsdS dS )	z
        Periodically sleeps for a certain amount until the baton is released.

        The amount of time slept depends on the ``wait_seconds`` parameter
        passed to the constructor.
        FNzWaited on lock file "z" for z	 seconds.   )
stacklevelT)
timer   pathexistsr   sleepr   r   warningswarn)r	   
has_warned
start_timer
   r
   r   wait(   s   
zFileBaton.waitc                 C   s&   | j durt| j  t| j dS )z'Release the baton and removes its file.N)r   r   closeremover   r   r
   r
   r   release;   s   
zFileBaton.release)r   N)r   N)	__name__
__module____qualname____doc__r   boolr   r   r!   r
   r
   r
   r   r      s    
r   )r   r   r   r   r
   r
   r
   r   <module>   s   