%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17212/usr/lib/python3.5/multiprocessing/__pycache__/
Upload File :
Create Path :
Current File : //snap/core/17212/usr/lib/python3.5/multiprocessing/__pycache__/resource_sharer.cpython-35.pyc



|�g��@s�ddlZddlZddlZddlZddlZddlmZddlmZddlmZdgZ	ej
dkr�e	dg7Z	Gd	d�de�Zn#e	d
g7Z	Gdd
�d
e�Z
Gdd
�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��5/usr/lib/python3.5/multiprocessing/resource_sharer.py�sendsz DupSocket.__init__.<locals>.send)�dup�_resource_sharer�register�close�_id)�selfZsockrr)rr
�__init__szDupSocket.__init__c	Cs9tj|j�� }|j�}tj|�SWdQRXdS)z1Get the socket.  This should only be called once.N)r�get_connectionrZ
recv_bytes�socketZ	fromshare)rr	rrrr
�detach$szDupSocket.detachN)�__name__�
__module__�__qualname__�__doc__rrrrrr
rs�DupFdc@s.eZdZdZdd�Zdd�ZdS)rz-Wrapper for fd which can be used at any time.csLtj|���fdd�}�fdd�}tj||�|_dS)Ncstj|�|�dS)N)rZsend_handle)r	r
)�new_fdrr
r1szDupFd.__init__.<locals>.sendcstj��dS)N)�osrr)rrr
r3szDupFd.__init__.<locals>.close)rrrrr)r�fdrrr)rr
r/szDupFd.__init__c	Cs-tj|j��}tj|�SWdQRXdS)z-Get the fd.  This should only be called once.N)rrrrZrecv_handle)rr	rrr
r7szDupFd.detachN)rrrrrrrrrr
r-sc@sseZdZdZdd�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)rrrr
r?s						z_ResourceSharer.__init__c
Csc|j�S|jdkr#|j�|jd7_||f|j|j<|j|jfSWdQRXdS)z+Register resource, returning an identifier.Nr)r'r)�_startr"r#)rrrrrr
rIs

z_ResourceSharer.registercCsTddlm}|\}}||dtj�j�}|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�crrr
rRs
z_ResourceSharer.get_connectionNcCs�ddlm}|j��|jdk	r�||jdtj�j�}|jd�|j�|j	j
|�|j	j�r�tj
d�|jj�d|_	d|_d|_x*|jj�D]\}\}}|�q�W|jj�WdQRXdS)z:Stop the background thread and clear registered resources.r)r-Nr.z._ResourceSharer thread did not stop when asked)r/r-r'r)rr0r.rrr*�joinZis_aliverZsub_warningr(r#�items�clear)rZtimeoutr-r4r3rrrrr
r[s"




			"z_ResourceSharer.stopcCs�x*|jj�D]\}\}}|�qW|jj�|jj|j�tj�|_|jdk	rx|jj	�d|_d|_
d|_dS)N)r#r6r7r$�appendr'r%r&r(rr)r*)rr3rrrrr
r+ps"

		z_ResourceSharer._afterforkcCs�ddlm}|jdks%t�tjd�|dtj�j�|_|jj	|_
tjd|j
�}d|_|j�||_dS)Nr)�Listenerz0starting listener and thread for sending handlesr.�targetT)r/r9r(�AssertionErrorr�debugrr0r.r2r)r%ZThread�_serveZdaemon�startr*)rr9�trrr
r,~s
	
z_ResourceSharer._startcCs�ttd�r.tjtjtdtj��x�yv|jj��`}|j�}|dkr_P|\}}|j	j
|�\}}z|||�Wd|�XWdQRXWq1tj�s�t
jt
j��Yq1Xq1WdS)N�pthread_sigmaskr)�hasattr�signalr@�	SIG_BLOCK�range�NSIGr(ZacceptZrecvr#�poprZ
is_exiting�sys�
excepthook�exc_info)rr	�msgr3Zdestination_pidrrrrr
r=�s z_ResourceSharer._serve)rrrrrr�staticmethodrrr+r,r=rrrr
r!=s
		r!)rrBrrGr%�rrr�__all__�platform�objectrrr!rrrrrr
�<module>s 	

`	

Zerion Mini Shell 1.0