????
Your IP : 3.19.74.75
3
\n.�@s�ddlZddlZddlZddlZddlZddlZddlmZddlm Z ddddd d
ddd
ddddddgZ
dZdZdZ
dZdZdZdZdadadd�Zdd�Zdd�Zdd�Zdd �Zd6d d
�Zd!d�Zej�Zej�Zd"d#�Zd$d�Z iZ!ej�Z"Gd%d�de#�Z$d7d&d'�Z%d(d
�Z&da'eee%e j(e j)fd)d*�Z*ej+e*�Gd+d�de#�Z,Gd,d�dej-�Z.yej/d-�Z0Wne1k
�r�d.Z0YnXd/d�Z2d0d1�Z3d2d3�Z4d4d5�Z5dS)8�N)�_args_from_interpreter_flags�)�process� sub_debug�debug�info�sub_warning�
get_logger�
log_to_stderr�get_temp_dir�register_after_fork�
is_exiting�Finalize�ForkAwareThreadLock�ForkAwareLocal�close_all_fds_except�SUBDEBUG�
SUBWARNING��
��Zmultiprocessingz+[%(levelname)s/%(processName)s] %(message)sFcGstrtjt|f|��dS)N)�_logger�logr)�msg�args�r�,/usr/lib64/python3.6/multiprocessing/util.pyr,scGstrtjt|f|��dS)N)rr�DEBUG)rrrrrr0scGstrtjt|f|��dS)N)rr�INFO)rrrrrr4scGstrtjt|f|��dS)N)rrr)rrrrrr8sc
Cs|ddl}|j�z\tsj|jt�adt_ttd�rFtjt �tj
t �n$tjjt fif�tjj
t fif�Wd|j�XtS)z0
Returns logger used by multiprocessing
rN�
unregister)�loggingZ_acquireLockrZ getLogger�LOGGER_NAMEZ propagate�hasattr�atexitr �_exit_function�registerZ
_exithandlers�remove�appendZ_releaseLock)r!rrrr <s
cCsJddl}t�}|jt�}|j�}|j|�|j|�|rB|j|�dat S)zB
Turn on logging and add a handler which prints to stderr
rNT)
r!r Z Formatter�DEFAULT_LOGGING_FORMATZ
StreamHandlerZsetFormatterZ
addHandlerZsetLevel�_log_to_stderrr)�levelr!ZloggerZ formatterZhandlerrrrr
Ws
cCsdtj�jjd�}|dkr`ddl}ddl}|jdd�}td|�td|j |gdd�|tj�jd<|S) N�tempdirrzpymp-)�prefixzcreated temp directory %s�d)r�exitpriorityi����)
r�current_processZ_config�get�shutil�tempfileZmkdtemprrZrmtree)r,r2r3rrrrms
cCsjttj��}|j�xP|D]H\\}}}}y||�Wqtk
r`}ztd|�WYdd}~XqXqWdS)Nz after forker raised exception %s)�list�_afterfork_registry�items�sort� Exceptionr)r6�indexZident�func�obj�errr�_run_after_forkerssr=cCs|ttt�t|�|f<dS)N)r5�next�_afterfork_counter�id)r;r:rrrr�sc@sLeZdZdZfddfdd�Zdeeejfdd�Z dd�Z
d d
�Zdd�ZdS)
rzA
Class which supports object finalization using weakrefs
NcCsx|dkst|�tkst�|dk r0tj||�|_n|dk s<t�||_||_|pNi|_|t t
�f|_tj
�|_|t|j<dS)N)�type�int�AssertionError�weakref�ref�_weakref� _callback�_args�_kwargsr>�_finalizer_counter�_key�os�getpid�_pid�_finalizer_registry)�selfr;�callbackr�kwargsr/rrr�__init__�s
zFinalize.__init__c
Cs�y||j=Wntk
r(|d�YnbX|j|�krD|d�d}n$|d|j|j|j�|j|j|j�}d|_|_|_|_|_|SdS)zQ
Run the callback unless it has already been called or cancelled
zfinalizer no longer registeredz+finalizer ignored because different processNz/finalizer calling %s with args %s and kwargs %s)rK�KeyErrorrNrGrHrIrF)rP�wrrOrrM�resrrr�__call__�szFinalize.__call__cCsDyt|j=Wntk
r Yn Xd|_|_|_|_|_dS)z3
Cancel finalization of the object
N)rOrKrTrFrGrHrI)rPrrr�cancel�s
zFinalize.cancelcCs
|jtkS)zS
Return whether this finalizer is still waiting to invoke callback
)rKrO)rPrrr�still_active�szFinalize.still_activecCs�y|j�}Wnttfk
r(d}YnX|dkr>d|jjSd|jjt|jd|j�f}|jrr|dt|j�7}|j r�|dt|j �7}|j
ddk r�|dt|j
d�7}|dS) Nz<%s object, dead>z<%s object, callback=%s�__name__z, args=z , kwargs=rz, exitprority=�>)rF�AttributeError� TypeError� __class__rZ�getattrrGrH�strrIrK)rPr;�xrrr�__repr__�s
zFinalize.__repr__)
rZ�
__module__�__qualname__�__doc__rSrOrrLrMrWrXrYrbrrrrr�scs�tdkrdS�dkrdd��n�fdd���fdd�tt�D�}|jdd�xX|D]P}tj|�}|dk rRtd |�y
|�WqRtk
r�d
dl}|j�YqRXqRW�dkr�tj�dS)z�
Run all finalizers whose exit priority is not None and at least minpriority
Finalizers with highest priority are called first; finalizers with
the same priority will be called in reverse order of creation.
NcSs|ddk S)Nrr)�prrr�<lambda>�sz!_run_finalizers.<locals>.<lambda>cs|ddk o|d�kS)Nrr)rf)�minpriorityrrrg�scsg|]}�|�r|�qSrr)�.0�key)�frr�
<listcomp>�sz#_run_finalizers.<locals>.<listcomp>T)�reversez
calling %sr) rOr4r7r1rr8� traceback� print_exc�clear)rh�keysrj� finalizerrnr)rkrhr�_run_finalizers�s$
rscCstp
tdkS)z6
Returns true if the process is shutting down
N)�_exitingrrrrr
scCs�ts�da|d�|d�|d�|�dk rzx*|�D] }|jr2|d|j�|jj�q2Wx"|�D]}|d|j�|j�q^W|d�|�dS)NTzprocess shutting downz2running all "atexit" finalizers with priority >= 0rz!calling terminate() for daemon %szcalling join() for process %sz)running the remaining "atexit" finalizers)rtZdaemon�nameZ_popenZ terminate�join)rrrs�active_childrenr0rfrrrr%s
r%c@s,eZdZdd�Zdd�Zdd�Zdd�Zd S)
rcCs|j�t|tj�dS)N)�_resetrr)rPrrrrSKszForkAwareThreadLock.__init__cCs"tj�|_|jj|_|jj|_dS)N)� threadingZLock�_lock�acquire�release)rPrrrrxOs
zForkAwareThreadLock._resetcCs
|jj�S)N)rz� __enter__)rPrrrr}TszForkAwareThreadLock.__enter__cGs|jj|�S)N)rz�__exit__)rPrrrrr~WszForkAwareThreadLock.__exit__N)rZrcrdrSrxr}r~rrrrrJsc@seZdZdd�Zdd�ZdS)rcCst|dd��dS)NcSs
|jj�S)N)�__dict__rp)r;rrrrg]sz)ForkAwareLocal.__init__.<locals>.<lambda>)r)rPrrrrS\szForkAwareLocal.__init__cCst|�ffS)N)rA)rPrrr�
__reduce__^szForkAwareLocal.__reduce__N)rZrcrdrSr�rrrrr[s�SC_OPEN_MAX�cCsft|�dtg}|j�|dtks,td��x4tt|�d�D] }tj||d||d�q>WdS)Nrzfd too large���r�)r4�MAXFDr7rC�range�lenrL�
closerange)Zfds�irrrrjs
cCs�tjdkrdSytjj�Wnttfk
r4YnXy@tjtjtj�}yt|dd�t_Wntj|��YnXWnttfk
r�YnXdS)NF)�closefd) �sys�stdin�close�OSError�
ValueErrorrL�open�devnull�O_RDONLY)�fdrrr�_close_stdints
r�cCsTytjj�Wnttfk
r&YnXytjj�Wnttfk
rNYnXdS)N)r��stdout�flushr\r��stderrrrrr�_flush_std_streams�sr�cCstddl}tttt|���}tj�\}}z2|j|tj|�gd|ddddddd d
||ddd�Stj |�tj |�XdS)NrTrFr�r�r�r�r�r�)
�_posixsubprocess�tuple�sorted�maprBrL�pipeZ fork_exec�fsencoder�)�pathrZpassfdsr�Zerrpipe_readZ
errpipe_writerrr�spawnv_passfds�s
r�)N)N)6rL� itertoolsr�rDr$ry�
subprocessr�r�__all__ZNOTSETrrrrr"r)rr*rrrrr r
r�WeakValueDictionaryr5�countr?r=rrOrJ�objectrrsr
rtrwr0r%r&rZlocalr�sysconfr�r8rr�r�r�rrrr�<module>
sf
S
,(