MINI MINI MANI MO

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

3


 \@sddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	dgZ
ejdkrxe
dg7Z
Gd	ddeZ
ne
d
g7Z
Gdd
d
eZGdd
d
eZeZejZdS)N)process)	reduction)utilstopZwin32	DupSocketc@s eZdZdZddZddZdS)rzPicklable wrapper for a socket.cs(|jfdd}tj|j|_dS)Ncsj|}|j|dS)N)shareZ
send_bytes)connpidr)new_sock7/usr/lib64/python3.6/multiprocessing/resource_sharer.pysends
z DupSocket.__init__.<locals>.send)dup_resource_sharerregisterclose_id)selfZsockrr)rr
__init__szDupSocket.__init__c	Cs*tj|j}|j}tj|SQRXdS)z1Get the socket.  This should only be called once.N)rget_connectionrZ
recv_bytessocketZ	fromshare)rr	rrrr
detach$szDupSocket.detachN)__name__
__module____qualname____doc__rrrrrr
rsDupFdc@s eZdZdZddZddZdS)rz-Wrapper for fd which can be used at any time.cs4tj|fdd}fdd}tj|||_dS)Ncstj||dS)N)rZsend_handle)r	r
)new_fdrr
r1szDupFd.__init__.<locals>.sendcstjdS)N)osrr)rrr
r3szDupFd.__init__.<locals>.close)rrrrr)rfdrrr)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	rrr
r7szDupFd.detachN)rrrrrrrrrr
r-sc@sNeZdZdZddZddZeddZdd	d
ZddZ	d
dZ
ddZdS)_ResourceSharerz-Manager for resouces using background thread.cCs@d|_i|_g|_tj|_d|_d|_d|_t	j
|tjdS)Nr)
_key_cache
_old_locks	threadingLock_lock	_listener_address_threadrZregister_after_forkr!
_afterfork)rrrr
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#)rrrrrr
rIs
z_ResourceSharer.registercCs<ddlm}|\}}||tjjd}|j|tjf|S)z<Return connection from which to receive identified resource.r)Client)authkey)
connectionr-rcurrent_processr.rrgetpid)Zidentr-addresskeycrrr
rRs
z_ResourceSharer.get_connectionNcCsddlm}|j|jdk	r||jtjjd}|jd|j|j	j
||j	jrdtj
d|jjd|_	d|_d|_x |jjD]\}\}}|qW|jjWdQRXdS)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#itemsclear)rZtimeoutr-r4r3rrrrr
r[s"





z_ResourceSharer.stopcCsnx |jjD]\}\}}|qW|jj|jj|jtj|_|jdk	rX|jj	d|_d|_
d|_dS)N)r#r6r7r$appendr'r%r&r(rr)r*)rr3rrrrr
r+ps




z_ResourceSharer._afterforkcCsfddlm}|jdksttjd|tjjd|_|jj	|_
tj|j
d}d|_|j||_dS)Nr)Listenerz0starting listener and thread for sending handles)r.)targetT)r/r9r(AssertionErrorrdebugrr0r.r2r)r%ZThread_serveZdaemonstartr*)rr9trrr
r,~s

z_ResourceSharer._startcCsttdr tjtjtdtjxy\|jjH}|j}|dkrBP|\}}|j	j
|\}}z|||Wd|XWdQRXWq"tjst
jt
jYq"Xq"WdS)Npthread_sigmaskr)hasattrsignalr@	SIG_BLOCKrangeNSIGr(ZacceptZrecvr#poprZ
is_exitingsys
excepthookexc_info)rr	msgr3Zdestination_pidrrrrr
r=s 
z_ResourceSharer._serve)N)rrrrrrstaticmethodrrr+r,r=rrrr
r!=s
		
r!)rrBrrGr%rcontextrr__all__platformobjectrrr!rrrrrr
<module>s 


`

OHA YOOOO