
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aù+  ã                   @   s¶  d dl Z d dlZd dlZddlmZ ddlmZ 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G dd„ deƒZG dd„ dejƒZG dd„ deƒZejdk�rRG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ deƒZG dd„ deƒZG dd „ d eƒZeƒ eƒ eƒ d!œZejd"k�rDeed# ƒZneed$ ƒZn8G d%d„ dejƒZG d&d„ deƒZd#eƒ iZeed# ƒZd'd(„ Ze ¡ Zd)d*„ Zd+d,„ Zd-d.„ ZdS )/é    Né   )Úprocess)Ú	reduction© c                   @   s   e Zd ZdS )ÚProcessErrorN©Ú__name__Ú
__module__Ú__qualname__r   r   r   ú</opt/alt/python38/lib64/python3.8/multiprocessing/context.pyr      s   r   c                   @   s   e Zd ZdS )ÚBufferTooShortNr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )ÚTimeoutErrorNr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )ÚAuthenticationErrorNr   r   r   r   r   r      s   r   c                   @   sX  e Zd ZeZeZeZeZeej	ƒZ	eej
ƒZ
eejƒZdd„ Zdd„ ZdCdd„Zdd	„ Zd
d„ ZdDdd„ZdEdd„ZdFdd„Zdd„ ZdGdd„ZdHdd„ZdIdd„Zdd„ ZdJd d!„Zd"d#„ Zd$d%„ Zdd&œd'd(„Zdd&œd)d*„Zd+d,„ Zd-d.„ ZdKd/d0„Z d1d2„ Z!d3d4„ Z"d5d6„ Z#dLd7d8„Z$dMd:d;„Z%dNd<d=„Z&e'd>d?„ ƒZ(e(j)d@d?„ ƒZ(dAdB„ Z*dS )OÚBaseContextc                 C   s"   t  ¡ }|d krtdƒ‚n|S d S )Nzcannot determine number of cpus)ÚosÚ	cpu_countÚNotImplementedError)ÚselfZnumr   r   r   r   )   s    
zBaseContext.cpu_countc                 C   s&   ddl m} ||  ¡ d�}| ¡  |S )Nr   )ÚSyncManager©Úctx)Zmanagersr   Úget_contextÚstart)r   r   Úmr   r   r   ÚManager1   s    zBaseContext.ManagerTc                 C   s   ddl m} ||ƒS )Nr   )ÚPipe)Ú
connectionr   )r   Zduplexr   r   r   r   r   <   s    zBaseContext.Pipec                 C   s   ddl m} ||  ¡ d�S )Nr   )ÚLockr   )Úsynchronizer   r   )r   r   r   r   r   r   A   s    zBaseContext.Lockc                 C   s   ddl m} ||  ¡ d�S )Nr   )ÚRLockr   )r   r   r   )r   r   r   r   r   r   F   s    zBaseContext.RLockNc                 C   s   ddl m} |||  ¡ d�S )Nr   )Ú	Conditionr   )r   r    r   )r   Úlockr    r   r   r   r    K   s    zBaseContext.Conditionr   c                 C   s   ddl m} |||  ¡ d�S )Nr   )Ú	Semaphorer   )r   r"   r   )r   Úvaluer"   r   r   r   r"   P   s    zBaseContext.Semaphorec                 C   s   ddl m} |||  ¡ d�S )Nr   )ÚBoundedSemaphorer   )r   r$   r   )r   r#   r$   r   r   r   r$   U   s    zBaseContext.BoundedSemaphorec                 C   s   ddl m} ||  ¡ d�S )Nr   )ÚEventr   )r   r%   r   )r   r%   r   r   r   r%   Z   s    zBaseContext.Eventc                 C   s    ddl m} |||||  ¡ d�S )Nr   )ÚBarrierr   )r   r&   r   )r   ZpartiesÚactionZtimeoutr&   r   r   r   r&   _   s    zBaseContext.Barrierr   c                 C   s   ddl m} |||  ¡ d�S )Nr   )ÚQueuer   )Úqueuesr(   r   )r   Úmaxsizer(   r   r   r   r(   d   s    zBaseContext.Queuec                 C   s   ddl m} |||  ¡ d�S )Nr   )ÚJoinableQueuer   )r)   r+   r   )r   r*   r+   r   r   r   r+   i   s    zBaseContext.JoinableQueuec                 C   s   ddl m} ||  ¡ d�S )Nr   )ÚSimpleQueuer   )r)   r,   r   )r   r,   r   r   r   r,   n   s    zBaseContext.SimpleQueuer   c                 C   s"   ddl m} ||||||  ¡ d�S )Nr   )ÚPool)Úcontext)Zpoolr-   r   )r   Z	processesZinitializerZinitargsZmaxtasksperchildr-   r   r   r   r-   s   s    
ÿzBaseContext.Poolc                 G   s   ddl m} ||f|žŽ S )Nr   )ÚRawValue)Úsharedctypesr/   )r   Útypecode_or_typeÚargsr/   r   r   r   r/   z   s    zBaseContext.RawValuec                 C   s   ddl m} |||ƒS )Nr   )ÚRawArray)r0   r3   )r   r1   Úsize_or_initializerr3   r   r   r   r3      s    zBaseContext.RawArray)r!   c                G   s&   ddl m} ||f|ž||  ¡ dœŽS )Nr   )ÚValue©r!   r   )r0   r5   r   )r   r1   r!   r2   r5   r   r   r   r5   „   s    ÿzBaseContext.Valuec                C   s    ddl m} |||||  ¡ d�S )Nr   )ÚArrayr6   )r0   r7   r   )r   r1   r4   r!   r7   r   r   r   r7   Š   s    ÿzBaseContext.Arrayc                 C   s,   t jdkr(tt ddƒr(ddlm} |ƒ  d S )NÚwin32ÚfrozenFr   )Úfreeze_support)ÚsysÚplatformÚgetattrÚspawnr:   )r   r:   r   r   r   r:   �   s    zBaseContext.freeze_supportc                 C   s   ddl m} |ƒ S )Nr   )Ú
get_logger)Úutilr?   )r   r?   r   r   r   r?   ˜   s    zBaseContext.get_loggerc                 C   s   ddl m} ||ƒS )Nr   )Úlog_to_stderr)r@   rA   )r   ÚlevelrA   r   r   r   rA   Ÿ   s    zBaseContext.log_to_stderrc                 C   s   ddl m} d S )Nr   )r   )Ú r   )r   r   r   r   r   Úallow_connection_pickling¤   s    z%BaseContext.allow_connection_picklingc                 C   s   ddl m} ||ƒ d S )Nr   )Úset_executable)r>   rE   )r   Ú
executablerE   r   r   r   rE   ¬   s    zBaseContext.set_executablec                 C   s   ddl m} ||ƒ d S )Nr   )Úset_forkserver_preload)Ú
forkserverrG   )r   Zmodule_namesrG   r   r   r   rG   ´   s    z"BaseContext.set_forkserver_preloadc                 C   sH   |d kr| S zt | }W n" tk
r:   td| ƒd ‚Y nX | ¡  |S )Nzcannot find context for %r)Ú_concrete_contextsÚKeyErrorÚ
ValueErrorÚ_check_available)r   Úmethodr   r   r   r   r   »   s    zBaseContext.get_contextFc                 C   s   | j S ©N)Ú_name©r   Z
allow_noner   r   r   Úget_start_methodÅ   s    zBaseContext.get_start_methodc                 C   s   t dƒ‚d S )Nz+cannot set start method of concrete context)rK   ©r   rM   Zforcer   r   r   Úset_start_methodÈ   s    zBaseContext.set_start_methodc                 C   s   t ƒ  d¡S ©Nr   )ÚglobalsÚget©r   r   r   r   ÚreducerË   s    zBaseContext.reducerc                 C   s   |t ƒ d< d S rT   )rU   )r   r   r   r   r   rX   Ñ   s    c                 C   s   d S rN   r   rW   r   r   r   rL   Õ   s    zBaseContext._check_available)T)N)r   )r   )NN)r   )r   )NNr   N)N)N)F)F)+r   r	   r
   r   r   r   r   Ústaticmethodr   Zcurrent_processZparent_processZactive_childrenr   r   r   r   r   r    r"   r$   r%   r&   r(   r+   r,   r-   r/   r3   r5   r7   r:   r?   rA   rD   rE   rG   r   rQ   rS   ÚpropertyrX   ÚsetterrL   r   r   r   r   r      sR   









  ÿ







r   c                   @   s   e Zd ZdZedd„ ƒZdS )ÚProcessNc                 C   s   t  ¡ j | ¡S rN   )Ú_default_contextr   r\   Ú_Popen)Úprocess_objr   r   r   r^   Þ   s    zProcess._Popen©r   r	   r
   Z_start_methodrY   r^   r   r   r   r   r\   Ü   s   r\   c                       sF   e Zd ZeZdd„ Zd‡ fdd„	Zddd„Zdd	d
„Zdd„ Z‡  Z	S )ÚDefaultContextc                 C   s   || _ d | _d S rN   )r]   Ú_actual_context)r   r.   r   r   r   Ú__init__å   s    zDefaultContext.__init__Nc                    s0   |d kr | j d kr| j| _ | j S tƒ  |¡S d S rN   )rb   r]   Úsuperr   )r   rM   ©Ú	__class__r   r   r   é   s
    
zDefaultContext.get_contextFc                 C   s<   | j d k	r|stdƒ‚|d kr,|r,d | _ d S |  |¡| _ d S )Nzcontext has already been set)rb   ÚRuntimeErrorr   rR   r   r   r   rS   ñ   s    zDefaultContext.set_start_methodc                 C   s"   | j d kr|rd S | j| _ | j jS rN   )rb   r]   rO   rP   r   r   r   rQ   ù   s
    
zDefaultContext.get_start_methodc                 C   sB   t jdkrdgS t jdkr"ddgnddg}tjr:| d¡ |S d S )Nr8   r>   ÚdarwinÚforkrH   )r;   r<   r   ÚHAVE_SEND_HANDLEÚappend)r   Úmethodsr   r   r   Úget_all_start_methods   s    

z$DefaultContext.get_all_start_methods)N)F)F)
r   r	   r
   r\   rc   r   rS   rQ   rm   Ú__classcell__r   r   re   r   ra   â   s   

ra   r8   c                   @   s   e Zd ZdZedd„ ƒZdS )ÚForkProcessri   c                 C   s   ddl m} || ƒS ©Nr   )ÚPopen)Z
popen_forkrq   ©r_   rq   r   r   r   r^     s    zForkProcess._PopenNr`   r   r   r   r   ro     s   ro   c                   @   s   e Zd ZdZedd„ ƒZdS )ÚSpawnProcessr>   c                 C   s   ddl m} || ƒS rp   )Zpopen_spawn_posixrq   rr   r   r   r   r^     s    úSpawnProcess._PopenNr`   r   r   r   r   rs     s   rs   c                   @   s   e Zd ZdZedd„ ƒZdS )ÚForkServerProcessrH   c                 C   s   ddl m} || ƒS rp   )Zpopen_forkserverrq   rr   r   r   r   r^      s    zForkServerProcess._PopenNr`   r   r   r   r   ru     s   ru   c                   @   s   e Zd ZdZeZdS )ÚForkContextri   N)r   r	   r
   rO   ro   r\   r   r   r   r   rv   %  s   rv   c                   @   s   e Zd ZdZeZdS ©ÚSpawnContextr>   N©r   r	   r
   rO   rs   r\   r   r   r   r   rx   )  s   rx   c                   @   s   e Zd ZdZeZdd„ ZdS )ÚForkServerContextrH   c                 C   s   t jstdƒ‚d S )Nz%forkserver start method not available)r   rj   rK   rW   r   r   r   rL   0  s    z"ForkServerContext._check_availableN)r   r	   r
   rO   ru   r\   rL   r   r   r   r   rz   -  s   rz   )ri   r>   rH   rh   r>   ri   c                   @   s   e Zd ZdZedd„ ƒZdS )rs   r>   c                 C   s   ddl m} || ƒS rp   )Zpopen_spawn_win32rq   rr   r   r   r   r^   D  s    rt   Nr`   r   r   r   r   rs   B  s   c                   @   s   e Zd ZdZeZdS rw   ry   r   r   r   r   rx   I  s   c                 C   s   t |  t_d S rN   )rI   r]   rb   )rM   r   r   r   Ú_force_start_methodV  s    r{   c                   C   s   t tdd ƒS )NÚspawning_popen)r=   Ú_tlsr   r   r   r   Úget_spawning_popen_  s    r~   c                 C   s
   | t _d S rN   )r}   r|   )Úpopenr   r   r   Úset_spawning_popenb  s    r€   c                 C   s    t ƒ d krtdt| ƒj ƒ‚d S )NzF%s objects should only be shared between processes through inheritance)r~   rg   Útyper   )Úobjr   r   r   Úassert_spawninge  s    
ÿÿrƒ   ) r   r;   Z	threadingrC   r   r   Ú__all__Ú	Exceptionr   r   r   r   Úobjectr   ZBaseProcessr\   ra   r<   ro   rs   ru   rv   rx   rz   rI   r]   r{   Zlocalr}   r~   r€   rƒ   r   r   r   r   Ú<module>   sL    ?,ý ÿ