Yfy-@sTddlZddlZddlZddlZddlZddlZddlmZddlm Z ddddd d d d d ddddddgZ dZ dZ dZ dZdZdZdZdadaddZddZddZddZdd Zdd d Zd!d ZejZejZd"d#Zd$d Z iZ!ejZ"Gd%dde#Z$dd&d'Z%d(d Z&da'eee%e j(e j)d)d*Z*ej+e*Gd+dde#Z,Gd,ddej-Z.yej/d-Z0Wne1k r+d.Z0YnXd/dZ2d0d1Z3d2d3Z4dS)4N)_args_from_interpreter_flags)process sub_debugdebuginfo sub_warning get_logger log_to_stderr get_temp_dirregister_after_fork is_exitingFinalizeForkAwareThreadLockForkAwareLocalclose_all_fds_exceptSUBDEBUG SUBWARNING Zmultiprocessingz+[%(levelname)s/%(processName)s] %(message)sFcGstrtjt||dS)N)_loggerlogr)msgargsr9/opt/alt/python35/lib64/python3.5/multiprocessing/util.pyr,scGstrtjt||dS)N)rrDEBUG)rrrrrr0scGstrtjt||dS)N)rrINFO)rrrrrr4scGstrtjt||dS)N)rrr)rrrrrr8sc Csddl}|jzts|jtadt_ttdrctjt tj t n2tj j t fiftj j t fifWd|jXtS)z0 Returns logger used by multiprocessing rN unregister)loggingZ _acquireLockrZ getLogger LOGGER_NAMEZ propagatehasattratexitr _exit_functionregisterZ _exithandlersremoveappendZ _releaseLock)r!rrrr <s     cCsgddl}t}|jt}|j}|j||j||r]|j|dat S)zB Turn on logging and add a handler which prints to stderr rNT) r!r Z FormatterDEFAULT_LOGGING_FORMATZ StreamHandlerZ setFormatterZ addHandlerZsetLevel_log_to_stderrr)levelr!ZloggerZ formatterZhandlerrrrr Ws      cCstjjjd}|dkrddl}ddl}|jdd}td|td|j d|gdd |tjjd<|S) Ntempdirrprefixzpymp-zcreated temp directory %sr exitprioritydi) rcurrent_processZ_configgetshutiltempfileZmkdtemprrZrmtree)r,r2r3rrrr ms  cCsttj}|jx`|D]X\\}}}}y||Wq#tk rz}ztd|WYdd}~Xq#Xq#WdS)Nz after forker raised exception %s)list_afterfork_registryitemssort Exceptionr)r6indexZidentfuncobjerrr_run_after_forkerss r=cCs#|tttt||f_finalizer_counter_keyosgetpid_pid_finalizer_registry)selfr;callbackrkwargsr.rrr__init__s$   zFinalize.__init__c Csy||j=Wntk r,|dYnX|j|krR|dd}n4|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)rKKeyErrorrNrGrHrIrF)rPwrrOrrMresrrr__call__s   %zFinalize.__call__c CsLyt|j=Wntk r"Yn&Xd|_|_|_|_|_dS)z3 Cancel finalization of the object N)rOrKrTrFrGrHrI)rPrrrcancels  zFinalize.cancelcCs |jtkS)zS Return whether this finalizer is still waiting to invoke callback )rKrO)rPrrr still_activeszFinalize.still_activecCsy|j}Wnttfk r0d}YnX|dkrKd|jjSd|jjt|jd|jf}|jr|dt|j7}|j r|dt|j 7}|j ddk r|dt|j d7}|dS) Nz<%s object, dead>z<%s object, callback=%s__name__z, args=z , kwargs=rz, exitprority=>) rFAttributeError TypeError __class__rZgetattrrGrHstrrIrK)rPr;xrrr__repr__s      zFinalize.__repr__) rZ __module__ __qualname____doc__rSrOrrLrMrWrXrYrbrrrrrs  c stdkrdSdkr+ddnfddfddttD}|jddxl|D]d}tj|}|dk rstd |y |Wqstk rd dl}|jYqsXqsWdkrtjdS) 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)prrrsz!_run_finalizers..cs|ddk o|dkS)Nrr)rf) minpriorityrrrgscs"g|]}|r|qSrr).0key)frr s z#_run_finalizers..reverseTz calling %sr) rOr4r7r1rr8 traceback print_excclear)rhkeysrjZ finalizerrnr)rkrhr_run_finalizerss$         rrcCstptdkS)z6 Returns true if the process is shutting down N)_exitingrrrrr scCstsda|d|d|d|dk rx7|D],}|jrC|d|j|jjqCWx+|D] }|d|j|jq}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)rsZdaemonnameZ_popenZ terminatejoin)rrrractive_childrenr0rfrrrr%s      r%c@s@eZdZddZddZddZddZd S) rcCs|jt|tjdS)N)_resetr r)rPrrrrSKs zForkAwareThreadLock.__init__cCs1tj|_|jj|_|jj|_dS)N) threadingZLock_lockacquirerelease)rPrrrrwOszForkAwareThreadLock._resetcCs |jjS)N)ry __enter__)rPrrrr|TszForkAwareThreadLock.__enter__cGs|jj|S)N)ry__exit__)rPrrrrr}WszForkAwareThreadLock.__exit__N)rZrcrdrSrwr|r}rrrrrJs    c@s(eZdZddZddZdS)rcCst|dddS)NcSs |jjS)N)__dict__rp)r;rrrrg]sz)ForkAwareLocal.__init__..)r )rPrrrrS\szForkAwareLocal.__init__cCst|ffS)N)rA)rPrrr __reduce__^szForkAwareLocal.__reduce__N)rZrcrdrSrrrrrr[s   SC_OPEN_MAXcCst|dtg}|j|dtks<tdx>tt|dD]&}tj||d||dqSWdS)Nrz fd too larger)r4MAXFDr7rCrangelenrL closerange)Zfdsirrrrjs  cCstjdkrdSytjjWnttfk r>YnXyPtjtjtj}yt|ddt_Wntj|YnXWnttfk rYnXdS)NclosefdF) sysstdincloseOSError ValueErrorrLopendevnullO_RDONLY)fdrrr _close_stdints  rcCsddl}tttt|}tj\}}zM|j|tj|gd|ddddddd d ||dddSWdtj |tj |XdS) NrTrFrrrrrr) _posixsubprocesstuplesortedmaprBrLpipeZ fork_execfsencoder)pathrZpassfdsrZ errpipe_readZ errpipe_writerrrspawnv_passfdss  r)5rL itertoolsrrDr$rx subprocessrr__all__ZNOTSETrrrrr"r)rr*rrrrr r r WeakValueDictionaryr5countr?r=r rOrJobjectrrrr rsrvr0r%r&rZlocalrsysconfrr8rrrrrrr sd                  S,  (