File: //usr/lib64/python3.8/multiprocessing/__pycache__/resource_sharer.cpython-38.pyc
U
e5dè ã @ s² d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZ ddlm Z dgZ
ejdkrxe
dg7 Z
G d d„ deƒZ
ne
d
g7 Z
G dd
„ d
eƒZG dd
„ d
eƒZeƒ ZejZdS )é Né )Úprocess)Ú reduction)ÚutilÚstopZwin32Ú DupSocketc @ s e Zd ZdZdd„ Zdd„ ZdS )r zPicklable wrapper for a socket.c s( | ¡ ‰ ‡ fdd„}t |ˆ j¡| _d S )Nc s ˆ |¡}| |¡ d S ©N)ÚshareZ
send_bytes)ÚconnÚpidr ©Znew_sock© ú7/usr/lib64/python3.8/multiprocessing/resource_sharer.pyÚsend s
z DupSocket.__init__.<locals>.send)ÚdupÚ_resource_sharerÚregisterÚcloseÚ_id)ÚselfZsockr r
r r Ú__init__ s zDupSocket.__init__c
C s6 t | j¡ }| ¡ }t |¡W 5 Q R £ S Q R X dS )z1Get the socket. This should only be called once.N)r Úget_connectionr Z
recv_bytesÚsocketZ 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 Zd ZdZdd„ Zdd„ ZdS )r z-Wrapper for fd which can be used at any time.c s4 t |¡‰ ‡ fdd„}‡ fdd„}t ||¡| _d S )Nc s t | ˆ |¡ d S r )r Zsend_handle)r
r ©Znew_fdr
r r 1 s zDupFd.__init__.<locals>.sendc s t ˆ ¡ d S r )Ú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¡}t |¡W 5 Q R £ S Q R X dS )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.detachNr r
r
r
r r - s c @ sN e Zd ZdZdd„ Zdd„ Zedd„ ƒZdd d
„Zdd„ Z d
d„ Z
dd„ ZdS )Ú_ResourceSharerz.Manager for resources using background thread.c C s@ d| _ i | _g | _t ¡ | _d | _d | _d | _t
| tj¡ d S )Nr )
Ú_keyÚ_cacheÚ
_old_locksÚ threadingÚLockÚ_lockÚ _listenerÚ_addressÚ_threadr Zregister_after_forkr# Ú
_afterfork)r r
r
r r ? s
z_ResourceSharer.__init__c
C sZ | j J | jdkr| ¡ | jd7 _||f| j| j<