
    %`iD                     |    d dl Z d dlZd dlZd dlZd dlmZmZ  ej        e          Z	 G d dej
                  ZdS )    N)CallableOptionalc                   N     e Zd ZdZdddee         f fdZd
dZd Zd	 Z	 xZ
S )PythonGCThreadzA background thread that triggers Python garbage collection.

    This thread waits for GC events from CoreWorker and triggers `gc.collect()` when
    when requested.N)gc_collect_funcr   c                    t                               d           t                                          dd           d| _        t          j                    | _        |pt          j	        | _
        d S )NzStarting Python GC threadr   T)namedaemonF)loggerdebugsuper__init___should_exit	threadingEvent	_gc_eventgccollect_gc_collect_func)selfr   	__class__s     s/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/_private/gc_collect_manager.pyr   zPythonGCThread.__init__   s`    0111.t<<<!"** / =2:    returnc                 8    | j                                          d S )N)r   setr   s    r   
trigger_gczPythonGCThread.trigger_gc   s    r   c                    | j         s| j                                         | j                                         | j         rd S 	 t	          j                    }|                                 }|dk    rBt                              d	                    |t	          j                    |z
                       n4# t          $ r'}t                              d|            Y d }~nd }~ww xY w| j         d S d S )Nr   z(gc.collect() freed {} refs in {} secondszError during GC: )r   r   waitcleartime	monotonicr   r   r   format	Exceptionerror)r   start	num_freedes       r   runzPythonGCThread.run   s   # 	6N!!!N  """  
6(( 1133	q==LLBII%t~'7'7%'?   
  6 6 6444555555556! # 	6 	6 	6 	6 	6s   A/B4 4
C%>C  C%c                     t                               d           d| _        | j                                         |                                  d S )NzStopping Python GC threadT)r   r   r   r   r   joinr   s    r   stopzPythonGCThread.stop/   sB    0111 		r   )r   N)__name__
__module____qualname____doc__r   r   r   r   r*   r-   __classcell__)r   s   @r   r   r   
   s         
 AE > > >8H+= > > > > > >   6 6 6(      r   r   )r   loggingr   r"   typingr   r   	getLoggerr.   r   Threadr    r   r   <module>r8      s    				       % % % % % % % %		8	$	$) ) ) ) )Y% ) ) ) ) )r   