MINI MINI MANI MO

Path : /usr/lib64/python3.6/multiprocessing/__pycache__/
File Upload :
Current File : //usr/lib64/python3.6/multiprocessing/__pycache__/forkserver.cpython-36.pyc

3


 \!@sddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddlm
Z
ddlmZddlm
Z
ddlmZddlmZd	d
ddgZd
ZejdZGdddeZdddZddZddZddZeZejZejZejZejZdS)N)
connection)process)	reduction)semaphore_tracker)spawn)utilensure_runningget_inherited_fdsconnect_to_new_processset_forkserver_preloadQc@s4eZdZddZddZddZddZd	d
ZdS)
ForkServercCs.d|_d|_d|_d|_tj|_dg|_dS)N__main__)_forkserver_address_forkserver_alive_fd_forkserver_pid_inherited_fds	threadingZLock_lock_preload_modules)selfr2/usr/lib64/python3.6/multiprocessing/forkserver.py__init__!s
zForkServer.__init__cCs&tdd|jDstd||_dS)z>Set list of module names to try to load in forkserver process.css|]}t|tkVqdS)N)typestr).0modrrr	<genexpr>+sz4ForkServer.set_forkserver_preload.<locals>.<genexpr>z&module_names must be a list of stringsN)allr	TypeError)rZ
modules_namesrrrr)sz!ForkServer.set_forkserver_preloadcCs|jS)zReturn list of fds inherited from parent process.

        This returns None if the current process was not started by fork
        server.
        )r)rrrrr
/szForkServer.get_inherited_fdscCs|jt|dtkr tdtjtj}|j|jtj	\}}tj	\}}|||j
tjg}||7}z<yt
j||||fStj|tj|YnXWdtj|tj|XWdQRXdS)a;Request forkserver to create a child process.

        Returns a pair of fds (status_r, data_w).  The calling process can read
        the child process's pid and (eventually) its returncode from status_r.
        The calling process should write to data_w the pickled preparation and
        process data.
        ztoo many fdsN)r	lenMAXFDS_TO_SEND
ValueErrorsocketAF_UNIXZconnectrospiperrZgetfdrZsendfdsclose)rfdsZclientZparent_rchild_wchild_rZparent_wZallfdsrrrr7s&



z!ForkServer.connect_to_new_processcs|jntj|jdk	rVtj|jtj\}}|s8dStj|jd|_	d|_d|_d}|j
rddhtjd}t
fdd|jD}ni}tjtj}tjd	}|j|tj|d
|jtj\}}ztyV|j|g}	||j||j
|f;}tj}
|
gtj}|d|g7}tj|
||	}Wntj|YnXWdtj|X||_	||_||_WdQRXWdQRXdS)
zMake sure that a fork server is running.

        This can be called from any process.  Note that usually a child
        process will just reuse the forkserver started by its parent, so
        ensure_running() will do nothing.
        Nz-from multiprocessing.forkserver import main; zmain(%d, %d, %r, **%r)	main_pathsys_pathignorec3s"|]\}}|kr||fVqdS)Nr)rxy)desired_keysrrr osz,ForkServer.ensure_running.<locals>.<genexpr>r(iz-czCfrom multiprocessing.forkserver import main; main(%d, %d, %r, **%r))rrr	rr)waitpidWNOHANGr+rrrrZget_preparation_datadictitemsr'r(rZarbitrary_addressZbindchmodZlistenr*filenoZget_executablerZ_args_from_interpreter_flagsZspawnv_passfds)rpidZstatuscmddatalistenerZaddressalive_rZalive_wZfds_to_passZexeargsr)r4rr	TsL





zForkServer.ensure_runningN)__name__
__module____qualname__rrr
rr	rrrrrs
rc4Cs|rhd|kr8|dk	r8dtj_ztj|Wdtj`Xx.|D]&}yt|Wq>tk
rbYq>Xq>Wtjt	j
t	jt	jt	ji}dd|j
D}tjtj|dR}tj<}	|jt_|	j|tj|	j|tjxyxdd|	jD}
|
rPqW||
kr$tj|d	d
ks tt||
ks2t|jdl}d	}tjdkrzFyt||||Wn.tk
rt j!t j"t j#j$YnXWdtj%|XWdQRXWqt&k
r}
z|
j't'j(krւWYdd}
~
XqXqWWdQRXWdQRXdS)zRun forkserver.rNTcSsi|]\}}tj|||qSr)signal)rsigvalrrr
<dictcomp>szmain.<locals>.<dictcomp>)r:cSsg|]\}}|jqSr)Zfileobj)rkeyZeventsrrr
<listcomp>szmain.<locals>.<listcomp>rr))rZcurrent_processZ_inheritingrZimport_main_path
__import__ImportErrorrZ_close_stdinrDSIGCHLDSIG_IGNSIGINTr8r'r(	selectorsZDefaultSelectorZgetsockname_forkserverrregisterZ
EVENT_READZselectr)readAssertionError
SystemExitZacceptfork
_serve_one	Exceptionsys
excepthookexc_infostderrflush_exitOSErrorerrnoZECONNABORTED)Zlistener_fdr?Zpreloadr/r0modnamehandlersZold_handlersr>ZselectorZrfdsscodeerrrmainsV





rfcCs|jtj|x |jD]\}}tj||qWtj|td}|jt|tks\t|^}}t	_
}	t	_|	tj
_t|tjdtjkrddl}
|
jtj|}t||dS)Nrrandomr)r+r)r8rDrZrecvfdsr%r$rTrQrrrZ_semaphore_trackerZ_fdwrite_unsignedgetpidrYmodulesrgZseedr_main)rcr>r?rbrErFr,r.r-ZstfdrgrdrrrrWs


rWcCsRd}tj}x8t||krBtj||t|}|s8td||7}qWtj|dS)NrJzunexpected EOFr)UNSIGNED_STRUCTsizer$r)rSEOFErrorZunpack)fdr=Zlengthrcrrr
read_unsignedsrpcCs@tj|}x0|r:tj||}|dkr,td||d}qWdS)Nrzshould not get here)rlZpackr)writeRuntimeError)ronmsgnbytesrrrrhs
rh)NN)r`r)rPrDr'ZstructrYrrrcontextrrrr__all__r%ZStructrlobjectrrfrWrprhrQr	r
rrrrrr<module>s6
s
=!


OHA YOOOO