File: //usr/lib/python3.5/multiprocessing/__pycache__/resource_sharer.cpython-35.pyc
Fa @ s d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l m Z d g Z e j
d k r e d g 7Z Gd d d e Z n# e d
g 7Z Gd d
d
e Z
Gd d
d
e Z e Z e j Z d S) N )process) reduction)utilstopZwin32 DupSocketc @ s. e Z d Z d Z d d Z d d Z d S)r zPicklable wrapper for a socket.c s: | j f d d } t j | j | _ d S)Nc s j | } | j | d S)N)shareZ
send_bytes)connpidr )new_sock 5/usr/lib/python3.5/multiprocessing/resource_sharer.pysend s z DupSocket.__init__.<locals>.send)dup_resource_sharerregisterclose_id)selfZsockr r )r r
__init__ s zDupSocket.__init__c C s9 t j | j } | j } t j | SWd QRXd S)z1Get the socket. This should only be called once.N)r get_connectionr Z
recv_bytessocketZ fromshare)r r r r r r
detach$ s zDupSocket.detachN)__name__
__module____qualname____doc__r r r r r r
r s DupFdc @ s. e Z d Z d Z d d Z d d Z d S)r z-Wrapper for fd which can be used at any time.c sL t j | f d d } f d d } t j | | | _ d S)Nc s t j | | d S)N)r Zsend_handle)r r
)new_fdr r
r 1 s zDupFd.__init__.<locals>.sendc s t j d S)N)osr r )r r r
r 3 s zDupFd.__init__.<locals>.close)r r r r r )r fdr r r )r r
r / s zDupFd.__init__c C s- t j | j } t j | SWd QRXd S)z-Get the fd. This should only be called once.N)r r r r Zrecv_handle)r r r r r
r 7 s zDupFd.detachN)r r r r r r r r r r
r - s c @ ss e Z d Z d Z d d Z d d Z e d d Z d d d
Z d d Z d
d Z
d d Z d S)_ResourceSharerz-Manager for resouces using background thread.c C s\ d | _ i | _ g | _ t j | _ d | _ d | _ d | _ t j
| t j d S)Nr )
_key_cache
_old_locks threadingLock_lock _listener_address_threadr Zregister_after_forkr!
_afterfork)r r r r
r ? s z_ResourceSharer.__init__c
C sc | j S | j d k r# | j | j d 7_ | | f | j | j <| j | j f SWd QRXd S)z+Register resource, returning an identifier.Nr )r' r) _startr"