3
\¤ ã @ sŠ d dl Z d dlZddlmZmZ ejs.edƒ‚ddlmZ ddlm Z ddlm
Z
ddlmZ d gZG d
d„ de
ƒZG dd „ d e jƒZdS )
é Né )Ú reductionÚset_spawning_popenz,No support for sending fds between processes)Ú
forkserver)Ú
popen_fork)Úspawn)ÚutilÚPopenc @ s e Zd Zdd„ Zdd„ ZdS )Ú_DupFdc C s
|| _ d S )N)Úind)Úselfr © r
ú8/usr/lib64/python3.6/multiprocessing/popen_forkserver.pyÚ__init__ s z_DupFd.__init__c C s t jƒ | j S )N)r Zget_inherited_fdsr )r r
r
r Údetach s z
_DupFd.detachN)Ú__name__Ú
__module__Ú__qualname__r r r
r
r
r r
s r
c sB e Zd ZdZeZ‡ fdd„Zdd„ Zdd„ Ze j
fdd „Z‡ ZS )
r r c s g | _ tƒ j|ƒ d S )N)Ú_fdsÚsuperr )r Úprocess_obj)Ú __class__r
r r ! s zPopen.__init__c C s | j j|ƒ t| j ƒd S )Nr )r ÚappendÚlen)r Úfdr
r
r Úduplicate_for_child% s zPopen.duplicate_for_childc C s¤ t j|jƒ}tjƒ }t| ƒ ztj||ƒ tj||ƒ W d td ƒ X tj | j
ƒ\| _}tj
| tj| jfƒ t|ddd��}|j|jƒ ƒ W d Q R X tj| jƒ| _d S )NÚwbT)Úclosefd)r Zget_preparation_dataÚ_nameÚioÚBytesIOr r Údumpr Zconnect_to_new_processr Úsentinelr ZFinalizeÚosÚcloseÚopenÚwriteÚ getbufferÚ
read_unsignedÚpid)r r Z prep_dataZbufÚwÚfr
r
r Ú_launch) s
z
Popen._launchc C sr | j d krlddlm} |tjkr$dnd }|| jg|ƒs:d S ytj| jƒ| _ W n tt fk
rj d| _ Y nX | j S )Nr )Úwaitéÿ )
Ú
returncodeZmultiprocessing.connectionr- r# ÚWNOHANGr" r r( ÚOSErrorÚEOFError)r Úflagr- Ztimeoutr
r
r Úpoll9 s
z
Popen.poll)
r r r Úmethodr
ZDupFdr r r, r# r0 r4 Ú
__classcell__r
r
)r r r s )r r# Úcontextr r ZHAVE_SEND_HANDLEÚImportErrorÚ r r r r Ú__all__Úobjectr
r r
r
r
r Ú