ó wŽ¸Qc@sĂddlZddlZddlZddlZddlmZddlmZmZdddddd d d d d ddddgZ dZ dZ dZ dZ dZdZdZdaead„Zd„Zd„Zd„Zd„Zdd„Zd„ZejƒZejƒZd „Z d!„Z!iZ"ejƒZ#d e$fd"„ƒYZ%dd#„Z&d$„Z'ea(eee&eed%„Z)ej*e)ƒde$fd&„ƒYZ+dej,fd'„ƒYZ-dS((i˙˙˙˙N(t_args_from_interpreter_flags(tcurrent_processtactive_childrent sub_debugtdebugtinfot sub_warningt get_loggert log_to_stderrt get_temp_dirtregister_after_forkt is_exitingtFinalizetForkAwareThreadLocktForkAwareLocaltSUBDEBUGt SUBWARNINGiii iitmultiprocessings+[%(levelname)s/%(processName)s] %(message)scGs trtjt||ŒndS(N(t_loggertlogR(tmsgtargs((s*/sys/lib/python2.7/multiprocessing/util.pyRCscGs trtjt||ŒndS(N(RRtDEBUG(RR((s*/sys/lib/python2.7/multiprocessing/util.pyRGscGs trtjt||ŒndS(N(RRtINFO(RR((s*/sys/lib/python2.7/multiprocessing/util.pyRKscGs trtjt||ŒndS(N(RRR(RR((s*/sys/lib/python2.7/multiprocessing/util.pyROscCs×ddl}ddl}|jƒzŁtsÄ|jtƒadt_|jtdƒ|jt dƒt |dƒr|j t ƒ|j t ƒqÄ|jjt difƒ|jjt difƒnWd|jƒXtS( s0 Returns logger used by multiprocessing i˙˙˙˙NiRRt unregister(((tloggingtatexitt _acquireLockRt getLoggert LOGGER_NAMEt propagatet addLevelNameRRthasattrRt_exit_functiontregistert _exithandlerstremovetappendt _releaseLock(RR((s*/sys/lib/python2.7/multiprocessing/util.pyRSs     cCsjddl}tƒ}|jtƒ}|jƒ}|j|ƒ|j|ƒ|r`|j|ƒnta t S(sB Turn on logging and add a handler which prints to stderr i˙˙˙˙N( RRt FormattertDEFAULT_LOGGING_FORMATt StreamHandlert setFormattert addHandlertsetLeveltTruet_log_to_stderrR(tlevelRtloggert formatterthandler((s*/sys/lib/python2.7/multiprocessing/util.pyRps     cCstƒjdkrwddl}ddl}|jddƒ}td|ƒtd|jd|gddƒ|tƒ_ntƒjS(Ni˙˙˙˙tprefixspymp-screated temp directory %sRt exitpriorityiœ˙˙˙( Rt_tempdirtNonetshutilttempfiletmkdtempRR trmtree(R7R8ttempdir((s*/sys/lib/python2.7/multiprocessing/util.pyR †s cCsqttjƒƒ}|jƒxN|D]F\\}}}}y||ƒWq#tk rh}td|ƒq#Xq#WdS(Ns after forker raised exception %s(tlistt_afterfork_registrytitemstsortt ExceptionR(R>tindextidenttfunctobjte((s*/sys/lib/python2.7/multiprocessing/util.pyt_run_after_forkers—s cCs#|ttjƒt|ƒ|fs( RLtAttributeErrort TypeErrorR6tgetattrRMRNtstrRORQ(RSRDtx((s*/sys/lib/python2.7/multiprocessing/util.pyt__repr__ŕs    (N( R]t __module__t__doc__R6RVRZR[R\Rd(((s*/sys/lib/python2.7/multiprocessing/util.pyR Ťs   csčtdkrdSˆdkr(d„}n‡fd†}gtjƒD]}||ƒrD|^qD}|jdtƒxV|D]N\}}td|ƒy |ƒWqytk rĆddl}|jƒqyXqyWˆdkrätj ƒndS(sŕ 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|dddk S(Ni(R6(tp((s*/sys/lib/python2.7/multiprocessing/util.pytscs&|dddk o%|ddˆkS(Ni(R6(Rg(t minpriority(s*/sys/lib/python2.7/multiprocessing/util.pyRhstreverses calling %si˙˙˙˙( RRR6R>R?R-RR@t tracebackt print_exctclear(RitfRcR>tkeyt finalizerRk((Ris*/sys/lib/python2.7/multiprocessing/util.pyt_run_finalizersôs    +     cCstptdkS(s6 Returns true if the process is shutting down N(t_exitingR6(((s*/sys/lib/python2.7/multiprocessing/util.pyR scCs°|dƒ|dƒ|dƒ|ƒdk r›x:|ƒD]/}|jr7|d|jƒ|jjƒq7q7Wx.|ƒD] }|d|jƒ|jƒqtWn|dƒ|ƒdS(Nsprocess shutting downs2running all "atexit" finalizers with priority >= 0is!calling terminate() for daemon %sscalling join() for process %ss)running the remaining "atexit" finalizers(R6t _daemonictnamet_popent terminatetjoin(RRRqRRRg((s*/sys/lib/python2.7/multiprocessing/util.pyR! s      cBseZd„Zd„ZRS(cCs|jƒt|tjƒdS(N(t_resetR R (RS((s*/sys/lib/python2.7/multiprocessing/util.pyRVKs cCs1tjƒ|_|jj|_|jj|_dS(N(t threadingtLockt_locktacquiretrelease(RS((s*/sys/lib/python2.7/multiprocessing/util.pyRxOs(R]ReRVRx(((s*/sys/lib/python2.7/multiprocessing/util.pyR Js cBseZd„Zd„ZRS(cCst|d„ƒdS(NcSs |jjƒS(N(t__dict__Rm(RD((s*/sys/lib/python2.7/multiprocessing/util.pyRhVs(R (RS((s*/sys/lib/python2.7/multiprocessing/util.pyRVUscCst|ƒdfS(N((ttype(RS((s*/sys/lib/python2.7/multiprocessing/util.pyt __reduce__Ws(R]ReRVR€(((s*/sys/lib/python2.7/multiprocessing/util.pyRTs (.t itertoolsRJRRyt subprocessRtmultiprocessing.processRRt__all__tNOTSETRRRRRR(R6RtFalseR.RRRRRRR tWeakValueDictionaryR=tcountRGRFR RRRPtobjectR RqR RrR!R"R tlocalR(((s*/sys/lib/python2.7/multiprocessing/util.pyt#sR                  I $   "