ó w®¸Qc@s2dddgZddlZddlZddlZddlZyejjejƒƒZWne k rtdZnXd„Z d„Z d„Z defd„ƒYZd efd „ƒYZd efd „ƒYZeƒa[iZxGejjƒD]6\ZZed dkrôdekrôeee ks(R tAssertionErrorRt_countertnextt _identityt_authkeyt _daemonict_tempdirtostgetpidt _parent_pidRt_targetttuplet_argstdictt_kwargsttypet__name__tjoint_name(tselftgroupttargettnametargstkwargstcount((s-/sys/lib/python2.7/multiprocessing/process.pyt__init__^s     cCs&|jr"|j|j|jŽndS(sQ Method to be run in sub-process; can be overridden in sub-class N(RRR(R$((s-/sys/lib/python2.7/multiprocessing/process.pytrunms cCs§|jdkstdƒ‚|jtjƒks<tdƒ‚tj sRtdƒ‚tƒ|j dk rt|j }nddl m }||ƒ|_tj j |ƒdS(s% Start child process scannot start a process twices:can only start a process object created by current processs3daemonic processes are not allowed to have childreni(tPopenN(RR RRRRRRRt_PopentforkingR-Rtadd(R$R-((s-/sys/lib/python2.7/multiprocessing/process.pytstartts    cCs|jjƒdS(sT Terminate process; sends SIGTERM signal or uses TerminateProcess() N(Rt terminate(R$((s-/sys/lib/python2.7/multiprocessing/process.pyR2…scCsq|jtjƒks!tdƒ‚|jdk s<tdƒ‚|jj|ƒ}|dk rmtjj |ƒndS(s5 Wait until child process terminates scan only join a child processscan only join a started processN( RRRRRR twaitRRR (R$ttimeouttres((s-/sys/lib/python2.7/multiprocessing/process.pyR"‹s ! cCsa|tkrtS|jtjƒks1tdƒ‚|jdkrDtS|jj ƒ|jj dkS(s1 Return whether process is alive scan only test a child processN( RtTrueRRRRRR tFalseRt returncode(R$((s-/sys/lib/python2.7/multiprocessing/process.pytis_alive•s ! cCs|jS(N(R#(R$((s-/sys/lib/python2.7/multiprocessing/process.pyR'¡scCs(t|tƒstdƒ‚||_dS(Nsname must be a string(t isinstancet basestringRR#(R$R'((s-/sys/lib/python2.7/multiprocessing/process.pyR'¥scCs|jS(s4 Return whether process is a daemon (R(R$((s-/sys/lib/python2.7/multiprocessing/process.pytdaemonªscCs(|jdkstdƒ‚||_dS(s1 Set whether process is a daemon sprocess has already startedN(RR RR(R$tdaemonic((s-/sys/lib/python2.7/multiprocessing/process.pyR<±scCs|jS(N(R(R$((s-/sys/lib/python2.7/multiprocessing/process.pytauthkey¹scCst|ƒ|_dS(s2 Set authorization key of process N(tAuthenticationStringR(R$R>((s-/sys/lib/python2.7/multiprocessing/process.pyR>½scCs#|jdkr|jS|jjƒS(sM Return exit code of process or `None` if it has yet to stop N(RR R(R$((s-/sys/lib/python2.7/multiprocessing/process.pytexitcodeÄscCs-|tkrtjƒS|jo(|jjSdS(sU Return identifier (PID) of process or `None` if it has yet to start N(RRRRtpid(R$((s-/sys/lib/python2.7/multiprocessing/process.pytidentÍs  cCsá|tkrd}n]|jtjƒkr3d}n?|jdkrKd}n'|jjƒdk rl|j}nd}t|ƒt kr²|dkr™d}q²dt j ||ƒ}ndt|ƒj |j ||jrÙdpÜd fS( Ntstartedtunknowntinitialitstoppeds stopped[%s]s<%s(%s, %s%s)>s daemont(RRRRRR RR@R tintt_exitcode_to_nametgetR!R#R(R$tstatus((s-/sys/lib/python2.7/multiprocessing/process.pyt__repr__Ùs       cCs´ddlm}y«tƒ|_tjdƒ|_y#tjj ƒt t j ƒt_Wnt tfk rmnX|a|jjƒ|jƒ|jdƒz|jƒd}Wd|jƒXWnátk rX}|jsßd}qŸt|jdtƒr|jd}qŸtjjt|jdƒdƒtjjƒt|jdtƒrOdnd}nGd}ddl}tjjd|jƒtjjƒ|j ƒnX|jd|ƒ|S( Ni(tutils child process calling self.run()is iÿÿÿÿs Process %s: s process exiting with exitcode %d(!RGRMtsetRt itertoolsR*RtsyststdintclosetopenRtdevnulltOSErrort ValueErrorRt_finalizer_registrytcleart_run_after_forkerstinfoR,t_exit_functiont SystemExitR(R:RHtstderrtwriteRtflusht tracebackR't print_exc(R$RMR@teR`((s-/sys/lib/python2.7/multiprocessing/process.pyt _bootstrapñsB         ! %  N((R!t __module__t__doc__R R.R+R,R1R2R"R9tpropertyR'tsetterR<R>R@RBRARLRc(((s-/sys/lib/python2.7/multiprocessing/process.pyRVs&       R?cBseZd„ZRS(cCs>ddlm}|jƒs+tdƒ‚ntt|ƒffS(Ni(R-sJPickling an AuthenticationString object is disallowed for security reasons(R/R-tthread_is_spawningt TypeErrorR?tbytes(R$R-((s-/sys/lib/python2.7/multiprocessing/process.pyt __reduce__s   (R!RdRk(((s-/sys/lib/python2.7/multiprocessing/process.pyR?st _MainProcesscBseZd„ZRS(cCspd|_t|_d|_d|_d|_tjdƒ|_ t ƒ|_ t t jdƒƒ|_d|_dS(Nt MainProcessii ((RR7RR#R RRROR*RRNRR?RturandomRR(R$((s-/sys/lib/python2.7/multiprocessing/process.pyR+-s      (R!RdR+(((s-/sys/lib/python2.7/multiprocessing/process.pyRl+sitSIGt_(t__all__RRPtsignalROtpathtabspathtgetcwdt ORIGINAL_DIRRUR RRRtobjectRRjR?RlRRIt__dict__titemsR'tsignum(((s-/sys/lib/python2.7/multiprocessing/process.pyt#s(        Ç