
    Vh                         d Z ddlmZ ddlZddlZddlZddlZddl	m
Z
mZ  ee
d          Z	 G d d          Zdd	ej        e         fd
ZdS )z)
Start multiple process locally for DDP.
    )partialN   )
simple_logfatalz	Executor:c                   &    e Zd Zd Zd Zd Zd ZdS )ChildrenManagerc                 "    g | _         d| _        d S )NF)childrenfailedselfs    S/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/dora/executor.py__init__zChildrenManager.__init__   s        c                 l    t          | j                  |_        | j                            |           d S N)lenr
   rankappend)r   childs     r   addzChildrenManager.add   s/    ''
U#####r   c                     | S r    r   s    r   	__enter__zChildrenManager.__enter__   s    r   c                 *   |t          d|            d| _        	 | j        r| j        st          | j                  D ]h}	 |                    d          }| j                            |           |rt          d|j         d           d| _        T# t          j        $ r Y ew xY w| j        r| j        n&# t          $ r t          d           d| _        Y nw xY w| j        D ]}|
                                 | j        st          d           d S d S )Nz-An exception happened while starting workers Tg?zWorker z died, killing all workersz8Received keyboard interrupt, trying to kill all workers.z"All workers completed successfully)logr   r
   listwaitremover   spTimeoutExpiredKeyboardInterrupt	terminate)r   exc_type	exc_value	tracebackr   exitcodes         r   __exit__zChildrenManager.__exit__"   sr    K	KKLLLDK	- 
/ 
/!$-00 	/ 	/E/#(::d#3#3 ,,U333# / P%* P P PQQQ*.DK , ! ! ! !	 - 
/ 
/ ! 	 	 	JKKKDKKK	 ] 	 	EOO{ 	6455555	6 	6s5   $B7 B<B7 B%"B7 $B%%B7 7 CCN)__name__
__module____qualname__r   r   r   r(   r   r   r   r   r      sP          $ $ $  6 6 6 6 6r   r   num_workersc           
         dd l }|p|j                                        }|s#t          d           t	          j        d           |                     |          }|j                            dd           |j	        
                                r|j	                                         t          d| d           t                      5 }t          |          D ]}i }t          t           j                  }	t%          |          |	d<   t%          |          |	d	<   d
|	d<   ddd| j        d| j        ddg}
|
|z  }
|dk    r=t*          j        |d<   t/          |j        d| dz  d          |d<   t*          j        |d<   |                    t+          j        t          j        g|
z   fd|	i|           	 d d d            n# 1 swxY w Y   t	          j        t9          |j                             d S )Nr   zODDP is only available on GPU. Make sure GPUs are properly configured with cuda.r   T)exist_okparentsz	Starting z worker processes for DDP.RANK
WORLD_SIZEz	127.0.0.1MASTER_ADDRz-mdoraz-Pz--main_modulerunz--stdinworker_z.logwstdoutstderrenv)torchcudadevice_countr   sysexitget_xpfoldermkdirrendezvous_fileexistsunlinkr   r   rangedictosenvironstrpackagemain_moduler    DEVNULLopenSTDOUTr   Popen
executableintr   )mainargvr,   th
world_sizexpmanagerr   kwargsr:   argss              r   start_ddp_workersr[   ;   s_   6 4 4 6 6J ]	_ 	_ 	_	T		BIOOT4O000	  "" $
!!###:J:::;;;			 Fg*%% 	F 	FD+-Frz""Cd))CK #JC!,C&$otGW4!DDLDaxx"$*w#'	4Hd4H4H4H(H##N#Nx #%9x KK#.)D0DDcDVDDF F F F	FF F F F F F F F F F F F F F F  HS  !!!!!s   	C(F>>GGr   )__doc__	functoolsr   rH   
subprocessr    r>   typingtpr   r   r   r   OptionalrR   r[   r   r   r   <module>rb      s           				     



     " " " " " " " " gj+&&"6 "6 "6 "6 "6 "6 "6 "6J" "r{3/? " " " " " "r   