AlkantarClanX12

Your IP : 3.22.42.189


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

3


 \�!�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddlm
Z
ddlmZddlm
Z
ddlmZddlmZd	d
ddgZd
Zejd�ZGdd�de�Zddd�Zdd�Zdd�Zdd�Ze�ZejZejZejZejZdS)�N�)�
connection)�process)�	reduction)�semaphore_tracker)�spawn)�util�ensure_running�get_inherited_fds�connect_to_new_process�set_forkserver_preload��Qc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	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)�self�r�2/usr/lib64/python3.6/multiprocessing/forkserver.py�__init__!s
zForkServer.__init__cCs&tdd�|jD��std��||_dS)Ncss|]}t|�tkVqdS)N)�type�str)�.0�modrrr�	<genexpr>+sz4ForkServer.set_forkserver_preload.<locals>.<genexpr>z&module_names must be a list of strings)�allr�	TypeError)rZ
modules_namesrrrr)sz!ForkServer.set_forkserver_preloadcCs|jS)N)r)rrrrr
/szForkServer.get_inherited_fdscCs�|j�t|�dtkr td��tjtj���}|j|j�tj	�\}}tj	�\}}|||j
tj�g}||7}z<yt
j||�||fStj|�tj|��YnXWdtj|�tj|�XWdQRXdS)N�ztoo many fds)r	�len�MAXFDS_TO_SEND�
ValueError�socket�AF_UNIXZconnectr�os�piperrZgetfdrZsendfds�close)r�fdsZclientZparent_r�child_w�child_rZparent_wZallfdsrrrr7s&



z!ForkServer.connect_to_new_processcs�|j��ntj�|jdk	rVtj|jtj�\}}|s8dStj|j�d|_	d|_d|_d}|j
r�ddh�tjd�}t
�fdd�|j�D��}ni}tjtj���}tjd�}|j|�tj|d	�|j�tj�\}}ztyV|j�|g}	||j�||j
|f;}tj�}
|
gtj�}|d
|g7}tj|
||	�}Wntj|��YnXWdtj|�X||_	||_||_WdQRXWdQRXdS)Nz-from multiprocessing.forkserver import main; zmain(%d, %d, %r, **%r)�	main_path�sys_path�ignorec3s"|]\}}|�kr||fVqdS)Nr)r�x�y)�desired_keysrrr osz,ForkServer.ensure_running.<locals>.<genexpr>r(i�z-czCfrom multiprocessing.forkserver import main; main(%d, %d, %r, **%r))rrr	rr)�waitpid�WNOHANGr+rrrrZget_preparation_data�dict�itemsr'r(rZarbitrary_addressZbind�chmodZlistenr*�filenoZget_executablerZ_args_from_interpreter_flagsZspawnv_passfds)r�pidZstatus�cmd�data�listenerZaddress�alive_rZalive_wZfds_to_passZexe�argsr)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>Wtj�t	j
t	jt	jt	ji}dd�|j
�D�}tjtj|d���,}tj���}	|j�t_|	j|tj�|	j|tj�x�y�xdd�|	j�D�}
|
r�Pq�W||
k�rt�|j�d�l}d	}tj�dk�r�zFyt||||�Wn.tk
�rntjtj ��tj!j"�YnXWdtj#|�XWdQRXWq�t$k
�r�}
z|
j%t%j&k�r��WYdd}
~
Xq�Xq�WWdQRXWdQRXdS)
NrTcSsi|]\}}tj||�|�qSr)�signal)r�sig�valrrr�
<dictcomp>�szmain.<locals>.<dictcomp>)r:cSsg|]\}}|j�qSr)Zfileobj)r�keyZeventsrrr�
<listcomp>�szmain.<locals>.<listcomp>rr)'rZcurrent_processZ_inheritingrZimport_main_path�
__import__�ImportErrorrZ_close_stdinrD�SIGCHLD�SIG_IGN�SIGINTr8r'r(�	selectorsZDefaultSelectorZgetsockname�_forkserverr�registerZ
EVENT_READZselect�
SystemExitZacceptr)�fork�
_serve_one�	Exception�sys�
excepthook�exc_info�stderr�flush�_exit�OSError�errnoZECONNABORTED)Zlistener_fdr?Zpreloadr/r0�modname�handlersZold_handlersr>ZselectorZrfds�s�code�errr�main�sR





rccCs�|j�tj|�x |j�D]\}}tj||�qWtj|td�}|j�|^}}t_}	t_	|	t
j_t
|tj��dtjkr�ddl}
|
j�tj|�}t
||�dS)Nr�randomr)r+r)r8rDrZrecvfdsr%rPrrrZ_semaphore_trackerZ_fd�write_unsigned�getpidrV�modulesrdZseedr�_main)r`r>r?r_rErFr,r.r-ZstfdrdrarrrrT�s


rTcCsRd}tj}x8t|�|krBtj||t|��}|s8td��||7}qWtj|�dS)N�zunexpected EOFr)�UNSIGNED_STRUCT�sizer$r)�read�EOFErrorZunpack)�fdr=Zlengthr`rrr�
read_unsigned�srocCs@tj|�}x0|r:tj||�}|dkr,td��||d�}qWdS)Nrzshould not get here)rjZpackr)�write�RuntimeError)rn�n�msg�nbytesrrrre�s
re)NN)r]r)rOrDr'ZstructrVr�rr�contextrrrr�__all__r%ZStructrj�objectrrcrTrorerPr	r
rrrrrr�<module>s6
s
=!