Your IP : 18.227.46.54


Current Path : /opt/alt/python34/lib64/python3.4/multiprocessing/__pycache__/
Upload File :
Current File : //opt/alt/python34/lib64/python3.4/multiprocessing/__pycache__/resource_sharer.cpython-34.pyo

�
e f��@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�stop�win32�	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��D/opt/alt/python34/lib64/python3.4/multiprocessing/resource_sharer.py�sendsz DupSocket.__init__.<locals>.send)�dup�_resource_sharer�register�close�_id)�selfZsockrr
)rr�__init__szDupSocket.__init__c	Cs8tj|j�� }|j�}tj|�SWdQXdS)z1Get the socket.  This should only be called once.N)r�get_connectionrZ
recv_bytes�socketZ	fromshare)rr
r	r
r
r�detach$szDupSocket.detachN)�__name__�
__module__�__qualname__�__doc__rrr
r
r
rrs�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
rr1szDupFd.__init__.<locals>.sendcstj��dS)N)�osrr
)rr
rr3szDupFd.__init__.<locals>.close)r rrrr)r�fdrrr
)rrr/szDupFd.__init__c	Cs,tj|j��}tj|�SWdQXdS)z-Get the fd.  This should only be called once.N)rrrrZrecv_handle)rr
r
r
rr7szDupFd.detachN)rrrrrrr
r
r
rr-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
rr?s						z_ResourceSharer.__init__c
Cse|j�V|jdkr&|j�n|jd7_||f|j|j<|j|jfSWdQXdS)z+Register resource, returning an identifier.Nr)r(r*�_startr#r$)rrrr
r
rrIs

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
rrRs
z_ResourceSharer.get_connectionNcCs�ddlm}|j��|jdk	r�||jdtj�j�}|jd�|j�|j	j
|�|j	j�r�tj
d�n|jj�d|_	d|_d|_x*|jj�D]\}\}}|�q�W|jj�nWdQXdS)z:Stop the background thread and clear registered resources.r)r.Nr/z._ResourceSharer thread did not stop when asked)r0r.r(r*rr1r/rrr+�joinZis_aliverZsub_warningr)r$�items�clear)rZtimeoutr.r5r4rrr
r
rr[s"



			"z_ResourceSharer.stopcCs�x*|jj�D]\}\}}|�qW|jj�|jj|j�tj�|_|jdk	r{|jj	�nd|_d|_
d|_dS)N)r$r7r8r%�appendr(r&r'r)rr*r+)rr4rrr
r
rr,ps"
		z_ResourceSharer._afterforkcCs|ddlm}tjd�|dtj�j�|_|jj|_	t
jd|j�}d|_
|j�||_dS)Nr)�Listenerz0starting listener and thread for sending handlesr/�targetT)r0r:r�debugrr1r/r)r3r*r&ZThread�_serveZdaemon�startr+)rr:�tr
r
rr-~s
	
z_ResourceSharer._startcCs�ttd�r1tjtjtdtj��nx�yx|jj��c}|j�}|dkrePn|\}}|j	j
|�\}}z|||�Wd|�XWdQXWq4tj�s�t
jt
j��nYq4Xq4WdS)N�pthread_sigmaskr)�hasattr�signalr@�	SIG_BLOCK�range�NSIGr)ZacceptZrecvr$�poprZ
is_exiting�sys�
excepthook�exc_info)rr
�msgr4Zdestination_pidrrr
r
rr=�s "z_ResourceSharer._serve)rrrrrr�staticmethodrrr,r-r=r
r
r
rr"=s
		r")r rBrrGr&�rrr�__all__�platform�objectrrr"rrr
r
r
r�<module>s 	

`	

?>