Spade
Mini Shell
| Directory:~$ /lib64/python3.6/multiprocessing/__pycache__/ |
| [Home] [System Details] [Kill Me] |
3
\��@s�ddlZddlZddlZddlZddlZddlmZddlmZddlm Z dgZ
ejdkrxe
dg7Z
Gd d�de�Z
ne
d
g7Z
Gdd
�d
e�ZGdd
�d
e�Ze�ZejZdS)�N�)�process)� reduction)�util�stopZwin32� DupSocketc@s
eZdZdZdd�Zdd�ZdS)rzPicklable wrapper for a
socket.cs(|j���fdd�}tj|�j�|_dS)Ncs�j|�}|j|�dS)N)�shareZ
send_bytes)�conn�pidr)�new_sock��'/usr/lib64/python3.6/resource_sharer.py�sends
z
DupSocket.__init__.<locals>.send)�dup�_resource_sharer�register�close�_id)�selfZsockrr)rr
�__init__szDupSocket.__init__c Cs*tj|j��}|j�}tj|�SQRXdS)z1Get
the socket. This should only be called once.N)r�get_connectionrZ
recv_bytes�socketZ fromshare)rr rrrr
�detach$szDupSocket.detachN)�__name__�
__module__�__qualname__�__doc__rrrrrr
rs�DupFdc@s
eZdZdZdd�Zdd�ZdS)rz-Wrapper for fd which can be used at
any
time.cs4tj|���fdd�}�fdd�}tj||�|_dS)Ncstj|�|�dS)N)rZsend_handle)r r
)�new_fdrr
r1szDupFd.__init__.<locals>.sendcstj��dS)N)�osrr)rrr
r3szDupFd.__init__.<locals>.close)rrrrr)r�fdrrr)rr
r/s
zDupFd.__init__c Cs"tj|j��}tj|�SQRXdS)z-Get
the fd. This should only be called
once.N)rrrrZrecv_handle)rr rrr
r7szDupFd.detachN)rrrrrrrrrr
r-sc@sNeZdZdZdd�Zdd�Zedd��Zdd d
�Zdd�Z d
d�Z
dd�ZdS)�_ResourceSharerz-Manager for resouces using background
thread.cCs@d|_i|_g|_tj�|_d|_d|_d|_t j
|tj�dS)Nr)
�_key�_cache�
_old_locks� threading�Lock�_lock� _listener�_address�_threadrZregister_after_forkr!�
_afterfork)rrrr
r?s
z_ResourceSharer.__init__c
CsN|j�>|jdkr|j�|jd7_||f|j|j<|j|jfSQRXdS)z+Register
resource, returning an
identifier.Nr)r'r)�_startr"r#)rrrrrr
rIs
z_ResourceSharer.registercCs<ddlm}|\}}||tj�jd�}|j|tj�f�|S)z<Return
connection from which to receive identified
resource.r)�Client)�authkey)�
connectionr-r�current_processr.rr�getpid)Zidentr-�address�key�crrr
rRs
z_ResourceSharer.get_connectionNcCs�ddlm}|j��|jdk r�||jtj�jd�}|jd�|j�|j j
|�|j j�rdtj
d�|jj�d|_ d|_d|_x
|jj�D]\}\}}|�q�W|jj�WdQRXdS)z:Stop the background
thread and clear registered resources.r)r-N)r.z._ResourceSharer thread
did not stop when
asked)r/r-r'r)rr0r.rrr*�joinZis_aliverZsub_warningr(r#�items�clear)rZtimeoutr-r4r3rrrrr
r[s"
z_ResourceSharer.stopcCsnx
|jj�D]\}\}}|�qW|jj�|jj|j�tj�|_|jdk rX|jj �d|_d|_
d|_dS)N)r#r6r7r$�appendr'r%r&r(rr)r*)rr3rrrrr
r+ps
z_ResourceSharer._afterforkcCsfddlm}|jdkst�tjd�|tj�jd�|_|jj |_
tj|j
d�}d|_|j�||_dS)Nr)�Listenerz0starting listener
and thread for sending
handles)r.)�targetT)r/r9r(�AssertionErrorr�debugrr0r.r2r)r%ZThread�_serveZdaemon�startr*)rr9�trrr
r,~s
z_ResourceSharer._startcCs�ttd�r
tjtjtdtj��x�y\|jj��H}|j�}|dkrBP|\}}|j j
|�\}}z|||�Wd|�XWdQRXWq"tj�s�t
jt
j��Yq"Xq"WdS)N�pthread_sigmaskr)�hasattr�signalr@� SIG_BLOCK�range�NSIGr(ZacceptZrecvr#�poprZ
is_exiting�sys�
excepthook�exc_info)rr �msgr3Zdestination_pidrrrrr
r=�s
z_ResourceSharer._serve)N)rrrrrr�staticmethodrrr+r,r=rrrr
r!=s
r!)rrBrrGr%�r�contextrr�__all__�platform�objectrrr!rrrrrr
�<module>s
`