U
e5d¶ ã @ 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.8/multiprocessing/popen_forkserver.pyÚ__init__ s z_DupFd.__init__c C s t ¡ | j S r )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ƒ |¡ d S r )Ú_fdsÚsuperr )r
Úprocess_obj©Ú __class__r r r ! s zPopen.__init__c C s | 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¡}t ¡ }t| ƒ zt ||¡ t ||¡ W 5 td ƒ X t | j
¡\| _}t
|¡}t | tj|| jf¡| _t|ddd��}| | ¡ ¡ W 5 Q R X t | j¡| _d S )NÚwbT)Úclosefd)r Zget_preparation_dataÚ_nameÚioÚBytesIOr r Údumpr Zconnect_to_new_processr ÚsentinelÚosÚdupr ZFinalizeZ close_fdsÚ finalizerÚopenÚwriteÚ getbufferÚread_signedÚpid)r
r Z prep_dataZbufÚwZ _parent_wÚfr r r Ú_launch) s
ÿz
Popen._launchc C sr | j d krlddlm} |tjkr$dnd }|| jg|ƒs:d S zt | j¡| _ W n tt fk
rj d| _ Y nX | j S )Nr )Úwaitéÿ )
Ú
returncodeZmultiprocessing.connectionr0 r% ÚWNOHANGr$ r r+ ÚOSErrorÚEOFError)r
Úflagr0 Ztimeoutr r r Úpoll= s
z
Popen.poll)
r r r Úmethodr
ZDupFdr r r/ r% r3 r7 Ú
__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 Ú