a
    åzeõ  ã                   @   sø   g d ¢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__Ú_pidÚweakrefÚWeakKeyDictionaryÚ	_childrenÚ_start_calledr   Ú_parent)ÚselfÚgroupÚtargetÚnameÚargsÚkwargsr   r   ú4/usr/lib/python3.9/multiprocessing/dummy/__init__.pyr   $   s
    
zDummyProcess.__init__c                 C   sN   | j tƒ u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
    r   c                   C   s   d S r0   r   r   r   r   r$   r   K   s    r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	Namespacec                K   s   | j  |¡ d S r0   )Ú__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, )	r1   r5   ÚitemsÚ
startswithÚappendÚsortÚ	__class__r,   Újoin)r   r9   Ztempr!   Úvaluer   r   r$   Ú__repr__U   s    
zNamespace.__repr__N)r,   r-   r.   r   r@   r   r   r   r$   r4   R   s   r4   Tc                 C   s   t   | |¡S r0   )Úarray)ÚtypecodeZsequenceÚlockr   r   r$   ÚArraya   s    rD   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 r0   )Ú	_typecodeÚ_value)r   rB   r?   rC   r   r   r$   r   e   s    zValue.__init__c                 C   s   | j S r0   ©rG   r)   r   r   r$   r?   i   s    zValue.valuec                 C   s
   || _ d S r0   rH   )r   r?   r   r   r$   r?   m   s    c                 C   s   dt | ƒj| j| jf S )Nz<%s(%r, %r)>)Útyper,   rF   rG   r)   r   r   r$   r@   q   s    zValue.__repr__N)T)r,   r-   r.   r   r/   r?   Úsetterr@   r   r   r   r$   rE   d   s   


rE   c                   C   s
   t jt S r0   )ÚsysÚmodulesr,   r   r   r   r$   r   t   s    r   c                   C   s   d S r0   r   r   r   r   r$   Úshutdownw   s    rM   r   c                 C   s   ddl m} || ||ƒS )Né   )Ú
ThreadPool)ÚpoolrO   )Ú	processesÚinitializerÚinitargsrO   r   r   r$   r   z   s    r   )T)NNr   )#Ú__all__r   rK   r   rA   Ú
connectionr   r   r   r   r   r
   r	   r   Úqueuer   r   r   r   Úcurrent_threadr   r   r   r   r   Úobjectr4   Údictr1   rD   rE   r   rM   r   r   r   r   r   r$   Ú<module>
   s.   


