
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aå.  ã                   @   s8  d dddgZ 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 zej 	e 
¡ ¡ZW n ek
rl   dZY nX dd„ Zdd„ Zd	d„ Zd
d„ ZG dd „ d eƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdaeƒ ae d¡aeƒ a[i Zeej  ¡ ƒD ]0\Z!Z"e!dd… dkrüde!krüde!› �ee" < qüeƒ Z#dS )ÚBaseProcessÚcurrent_processÚactive_childrenÚparent_processé    N)ÚWeakSetc                   C   s   t S ©N)Ú_current_process© r	   r	   ú</opt/alt/python38/lib64/python3.8/multiprocessing/process.pyr   %   s    c                   C   s   t ƒ  ttƒS r   )Ú_cleanupÚlistÚ	_childrenr	   r	   r	   r
   r   +   s    c                   C   s   t S r   )Ú_parent_processr	   r	   r	   r
   r   3   s    c                  C   s*   t tƒD ]} | j ¡ d k	rt | ¡ qd S r   )r   r   Ú_popenÚpollÚdiscard)Úpr	   r	   r
   r   =   s    r   c                   @   sø   e Zd Zdd„ Zddddi fddœdd„Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Z	d+dd„Z
dd„ Zdd„ Zedd„ ƒZejdd„ ƒZedd„ ƒZejdd„ ƒZedd„ ƒZejd d„ ƒZed!d"„ ƒZed#d$„ ƒZeZed%d&„ ƒZd'd(„ Zd,d)d*„ZdS )-r   c                 C   s   t ‚d S r   )ÚNotImplementedError©Úselfr	   r	   r
   Ú_PopenM   s    zBaseProcess._PopenNr	   )Údaemonc                C   s    t tƒ}tj|f | _tj ¡ | _t ¡ | _tj	| _
d | _d| _|| _t|ƒ| _t|ƒ| _|p€t| ƒjd d dd„ | jD ƒ¡ | _|d k	r’|| _t | ¡ d S )NFú-ú:c                 s   s   | ]}t |ƒV  qd S r   )Ústr)Ú.0Úir	   r	   r
   Ú	<genexpr>^   s     z'BaseProcess.__init__.<locals>.<genexpr>)ÚnextÚ_process_counterr   Ú	_identityÚ_configÚcopyÚosÚgetpidÚ_parent_pidÚnameÚ_parent_namer   Ú_closedÚ_targetÚtupleÚ_argsÚdictÚ_kwargsÚtypeÚ__name__ÚjoinÚ_namer   Ú	_danglingÚadd)r   ÚgroupÚtargetr&   ÚargsÚkwargsr   Úcountr	   r	   r
   Ú__init__P   s     


ÿzBaseProcess.__init__c                 C   s   | j rtdƒ‚d S )Nzprocess object is closed)r(   Ú
ValueErrorr   r	   r	   r
   Ú_check_closedc   s    zBaseProcess._check_closedc                 C   s   | j r| j | j| jŽ d S r   )r)   r+   r-   r   r	   r	   r
   Úrung   s    zBaseProcess.runc                 C   s>   |   ¡  tƒ  |  | ¡| _| jj| _| `| `| `t	 
| ¡ d S r   )r;   r   r   r   ÚsentinelÚ	_sentinelr)   r+   r-   r   r3   r   r	   r	   r
   Ústartn   s    
zBaseProcess.startc                 C   s   |   ¡  | j ¡  d S r   )r;   r   Ú	terminater   r	   r	   r
   r@   €   s    zBaseProcess.terminatec                 C   s   |   ¡  | j ¡  d S r   )r;   r   Úkillr   r	   r	   r
   rA   ‡   s    zBaseProcess.killc                 C   s*   |   ¡  | j |¡}|d k	r&t | ¡ d S r   )r;   r   Úwaitr   r   )r   ÚtimeoutÚresr	   r	   r
   r0   Ž   s    zBaseProcess.joinc                 C   sJ   |   ¡  | tkrdS | jd kr"dS | j ¡ }|d kr8dS t | ¡ dS d S )NTF)r;   r   r   r   r   r   )r   Ú
returncoder	   r	   r
   Úis_alive™   s    


zBaseProcess.is_alivec                 C   sH   | j d k	r>| j  ¡ d kr tdƒ‚| j  ¡  d | _ | `t | ¡ d| _d S )Nz^Cannot close a process while it is still running. You should first call join() or terminate().T)r   r   r:   Úcloser>   r   r   r(   r   r	   r	   r
   rG   ¬   s    


zBaseProcess.closec                 C   s   | j S r   ©r1   r   r	   r	   r
   r&   ½   s    zBaseProcess.namec                 C   s
   || _ d S r   rH   )r   r&   r	   r	   r
   r&   Á   s    c                 C   s   | j  dd¡S )Nr   F)r!   Úgetr   r	   r	   r
   r   Æ   s    zBaseProcess.daemonc                 C   s   || j d< d S )Nr   ©r!   )r   Zdaemonicr	   r	   r
   r   Í   s    c                 C   s
   | j d S ©NÚauthkeyrJ   r   r	   r	   r
   rL   Õ   s    zBaseProcess.authkeyc                 C   s   t |ƒ| jd< d S rK   )ÚAuthenticationStringr!   )r   rL   r	   r	   r
   rL   Ù   s    c                 C   s"   |   ¡  | jd kr| jS | j ¡ S r   )r;   r   r   r   r	   r	   r
   Úexitcodeà   s    
zBaseProcess.exitcodec                 C   s*   |   ¡  | tkrt ¡ S | jo$| jjS d S r   )r;   r   r#   r$   r   Úpidr   r	   r	   r
   Úidentê   s    zBaseProcess.identc                 C   s4   |   ¡  z| jW S  tk
r.   tdƒd ‚Y nX d S )Nzprocess not started)r;   r>   ÚAttributeErrorr:   r   r	   r	   r
   r=   ÷   s
    zBaseProcess.sentinelc                 C   sè   d }| t krd}nL| jrd}n@| jt ¡ kr2d}n,| jd krBd}n| j ¡ }|d k	rZd}nd}t| ƒjd| j	 g}| jd k	rŽ| 
d| jj ¡ | 
d| j ¡ | 
|¡ |d k	rÊt ||¡}| 
d	| ¡ | jrÚ| 
d
¡ dd |¡ S )NZstartedÚclosedÚunknownÚinitialZstoppedzname=%rzpid=%sz	parent=%szexitcode=%sr   z<%s>ú )r   r(   r%   r#   r$   r   r   r.   r/   r1   ÚappendrO   Ú_exitcode_to_namerI   r   r0   )r   rN   ZstatusÚinfor	   r	   r
   Ú__repr__  s0    




zBaseProcess.__repr__c              
   C   sv  ddl m}m} �z>zž| jd k	r,| | j¡ t	 
d¡atƒ a| ¡  t}| at| j| j|ƒatjrnt ¡  ¡  z|j ¡  | ¡  W 5 ~X | d¡ z|  ¡  d}W 5 | ¡  X W nš tk
�r } zJ|jsÒd}n:t|jd tƒrî|jd }nt j! "t#|jd ƒd ¡ d}W 5 d }~X Y n2   d}dd l$}t j! "d| j% ¡ | &¡  Y nX W 5 t ¡  | d| ¡ | ¡  X |S )Né   )ÚutilÚcontextz process exiting with exitcode %dz child process calling self.run()r   Ú
zProcess %s:
)'Ú r[   r\   Ú	threadingZ	_shutdownrX   Z_flush_std_streamsZ_start_methodZ_force_start_methodÚ	itertoolsr8   r   Úsetr   Z_close_stdinr   Ú_ParentProcessr'   r%   r   Z_HAVE_THREAD_NATIVE_IDZmain_threadZ_set_native_idZ_finalizer_registryÚclearZ_run_after_forkersZ_exit_functionr<   Ú
SystemExitr6   Ú
isinstanceÚintÚsysÚstderrÚwriter   Ú	tracebackr&   Ú	print_exc)r   Zparent_sentinelr[   r\   rN   Zold_processÚerj   r	   r	   r
   Ú
_bootstrap"  sR    

  ÿ


zBaseProcess._bootstrap)N)N)r/   Ú
__module__Ú__qualname__r   r9   r;   r<   r?   r@   rA   r0   rF   rG   Úpropertyr&   Úsetterr   rL   rN   rP   rO   r=   rY   rm   r	   r	   r	   r
   r   G   sB   ÿ







	


c                   @   s   e Zd Zdd„ ZdS )rM   c                 C   s,   ddl m} |ƒ d krtdƒ‚tt| ƒffS )NrZ   )Úget_spawning_popenzJPickling an AuthenticationString object is disallowed for security reasons)r\   rr   Ú	TypeErrorrM   Úbytes)r   rr   r	   r	   r
   Ú
__reduce__X  s    
ÿzAuthenticationString.__reduce__N)r/   rn   ro   ru   r	   r	   r	   r
   rM   W  s   rM   c                   @   s6   e Zd Zdd„ Zdd„ Zedd„ ƒZd
dd	„ZeZdS )rb   c                 C   s4   d| _ || _|| _d | _d | _d| _|| _i | _d S )Nr	   F)r    r1   Ú_pidr%   r   r(   r>   r!   )r   r&   rO   r=   r	   r	   r
   r9   h  s    z_ParentProcess.__init__c                 C   s   ddl m} || jgdd� S ©Nr   )rB   )rC   ©Zmultiprocessing.connectionrB   r>   )r   rB   r	   r	   r
   rF   r  s    z_ParentProcess.is_alivec                 C   s   | j S r   )rv   r   r	   r	   r
   rP   v  s    z_ParentProcess.identNc                 C   s    ddl m} || jg|d� d S rw   rx   )r   rC   rB   r	   r	   r
   r0   z  s    z_ParentProcess.join)N)	r/   rn   ro   r9   rF   rp   rP   r0   rO   r	   r	   r	   r
   rb   f  s   


rb   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_MainProcessc                 C   s8   d| _ d| _d | _d | _d| _tt d¡ƒddœ| _d S )Nr	   ZMainProcessFé    z/mp)rL   Z	semprefix)	r    r1   r%   r   r(   rM   r#   Úurandomr!   r   r	   r	   r
   r9   ‰  s    ÿz_MainProcess.__init__c                 C   s   d S r   r	   r   r	   r	   r
   rG   ›  s    z_MainProcess.closeN)r/   rn   ro   r9   rG   r	   r	   r	   r
   ry   ‡  s   ry   rZ   é   ZSIGÚ_r   )$Ú__all__r#   rg   Úsignalr`   r_   Z_weakrefsetr   ÚpathÚabspathÚgetcwdZORIGINAL_DIRÚOSErrorr   r   r   r   Úobjectr   rt   rM   rb   ry   r   r   r8   r   ra   r   rW   r   Ú__dict__Úitemsr&   Zsignumr2   r	   r	   r	   r
   Ú<module>
   s@   ÿ


  !
