U
    çÑÙgõ  ã                   @   s  d ddddddddd	d
d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mZ ddlmZmZm	Z	m
Z
 ddlmZmZmZ ddlmZ G dd„ dejƒZeZejZe ¡ eƒ _dd„ Zdd„ ZG dd„ deƒZeZeZd'dd„ZG d d!„ d!eƒZd"d„ Zd#d$„ Z d(d&d„Z!eZ"dS ))ÚProcessÚcurrent_processÚactive_childrenÚfreeze_supportÚLockÚRLockÚ	SemaphoreÚBoundedSemaphoreÚ	ConditionÚEventÚBarrierÚQueueÚManagerÚPipeÚPoolÚJoinableQueueé    Né   )r   )r   r   r   r   )r
   r	   r   )r   c                   @   s4   e Zd Zddddi fdd„Zdd„ Zedd„ ƒZdS )	ÚDummyProcessN© c                 C   s8   t j | |||||¡ d | _t ¡ | _d| _tƒ | _	d S )NF)
Ú	threadingÚThreadÚ__init__Z_pidÚweakrefÚWeakKeyDictionaryÚ	_childrenÚ_start_calledr   Ú_parent)ÚselfÚgroupÚtargetÚnameÚargsÚkwargsr   r   ú4/usr/lib/python3.8/multiprocessing/dummy/__init__.pyr   $   s
    
zDummyProcess.__init__c                 C   sN   | j tƒ k	r td | j tƒ ¡ƒ‚d| _t| j dƒr>d | j j| < tj 	| ¡ d S )Nz,Parent is {0!r} but current_process is {1!r}Tr   )
r   r   ÚRuntimeErrorÚformatr   Úhasattrr   r   r   Ústart©r   r   r   r#   r'   +   s     ÿÿzDummyProcess.startc                 C   s   | j r|  ¡ sdS d S d S )Nr   )r   Úis_aliver(   r   r   r#   Úexitcode5   s    zDummyProcess.exitcode)Ú__name__Ú
__module__Ú__qualname__r   r'   Úpropertyr*   r   r   r   r#   r   "   s   
r   c                  C   s2   t ƒ j} t| ƒD ]}| ¡ s|  |d ¡ qt| ƒS ©N)r   r   Úlistr)   Úpop)ZchildrenÚpr   r   r#   r   D   s
    c                   C   s   d S r/   r   r   r   r   r#   r   K   s    c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	Namespacec                K   s   | j  |¡ d S r/   )Ú__dict__Úupdate)r   Úkwdsr   r   r#   r   S   s    zNamespace.__init__c                 C   sZ   t | j ¡ ƒ}g }|D ]$\}}| d¡s| d||f ¡ q| ¡  d| jjd |¡f S )NÚ_z%s=%rz%s(%s)z, )	r0   r4   ÚitemsÚ
startswithÚappendÚsortÚ	__class__r+   Újoin)r   r8   Ztempr    Úvaluer   r   r#   Ú__repr__U   s    
zNamespace.__repr__N)r+   r,   r-   r   r?   r   r   r   r#   r3   R   s   r3   Tc                 C   s   t   | |¡S r/   )Úarray)ÚtypecodeZsequenceÚlockr   r   r#   ÚArraya   s    rC   c                   @   s8   e Zd Zd
dd„Zedd„ ƒZejdd„ ƒZdd„ Zd	S )ÚValueTc                 C   s   || _ || _d S r/   )Ú	_typecodeÚ_value)r   rA   r>   rB   r   r   r#   r   e   s    zValue.__init__c                 C   s   | j S r/   ©rF   r(   r   r   r#   r>   i   s    zValue.valuec                 C   s
   || _ d S r/   rG   )r   r>   r   r   r#   r>   m   s    c                 C   s   dt | ƒj| j| jf S )Nz<%s(%r, %r)>)Útyper+   rE   rF   r(   r   r   r#   r?   q   s    zValue.__repr__N)T)r+   r,   r-   r   r.   r>   Úsetterr?   r   r   r   r#   rD   d   s   


rD   c                   C   s
   t jt S r/   )ÚsysÚmodulesr+   r   r   r   r#   r   t   s    c                   C   s   d S r/   r   r   r   r   r#   Úshutdownw   s    rL   r   c                 C   s   ddl m} || ||ƒS )Né   )Ú
ThreadPool)ZpoolrN   )Z	processesZinitializerZinitargsrN   r   r   r#   r   z   s    )T)NNr   )#Ú__all__r   rJ   r   r@   Z
connectionr   r   r   r   r   r
   r	   r   Zqueuer   r   r   r   Zcurrent_threadr   r   r   r   r   Úobjectr3   Údictr0   rC   rD   r   rL   r   r   r   r   r   r#   Ú<module>   sN                ý


