a :êdgà.ã@s2gd¢ZddlZddlZddlZddlZddlZddlmZzej  e  ¡¡Z Wne yfdZ Yn0dd„Z dd„Zdd „Zd d „ZGd d „d eƒZGdd„deƒZGdd„deƒZGdd„deƒZdaeƒae d¡aeƒa[iZeej  ¡ƒD]0\Z!Z"e!dd…dkröde!vröde!›ee" <qöeƒZ#dS))Ú BaseProcessÚcurrent_processÚactive_childrenÚparent_processéN)ÚWeakSetcCstS©N)Ú_current_process©r r ú3/usr/local/lib/python3.9/multiprocessing/process.pyr%srcCstƒttƒSr)Ú_cleanupÚlistÚ _childrenr r r r r+srcCstSr)Ú_parent_processr r r r r3srcCs*ttƒD]}|j ¡durt |¡qdSr)r r Ú_popenÚpollÚdiscard)Úpr r r r =s r c@søeZdZdd„Zddddifddœdd„Zdd „Zd d „Zd d „Zdd„Zdd„Z d+dd„Z dd„Z dd„Z e dd„ƒZejdd„ƒZe dd„ƒZejdd„ƒZe dd„ƒZejd d„ƒZe d!d"„ƒZe d#d$„ƒZeZe d%d&„ƒZd'd(„Zd,d)d*„ZdS)-rcCst‚dSr)ÚNotImplementedError©Úselfr r r Ú_PopenMszBaseProcess._PopenNr )ÚdaemoncCs ttƒ}tj|f|_tj ¡|_t ¡|_tj |_ d|_ d|_ ||_ t|ƒ|_t|ƒ|_|p€t|ƒjdd dd„|jDƒ¡|_|dur’||_t |¡dS)NFú-ú:css|]}t|ƒVqdSr)Ústr)Ú.0Úir r r Ú ^óz'BaseProcess.__init__..)ÚnextÚ_process_counterrÚ _identityÚ_configÚcopyÚosÚgetpidÚ _parent_pidÚnameÚ _parent_namerÚ_closedÚ_targetÚtupleÚ_argsÚdictÚ_kwargsÚtypeÚ__name__ÚjoinÚ_namerÚ _danglingÚadd)rÚgroupÚtargetr'ÚargsÚkwargsrÚcountr r r Ú__init__Ps     ÿzBaseProcess.__init__cCs|jrtdƒ‚dS)Nzprocess object is closed)r)Ú ValueErrorrr r r Ú _check_closedcszBaseProcess._check_closedcCs|jr|j|ji|j¤ŽdSr)r*r,r.rr r r ÚrungszBaseProcess.runcCs>| ¡tƒ| |¡|_|jj|_|`|`|`t   |¡dSr) r<r rrÚsentinelÚ _sentinelr*r,r.r r4rr r r Ústartns    zBaseProcess.startcCs| ¡|j ¡dSr)r<rÚ terminaterr r r rA€szBaseProcess.terminatecCs| ¡|j ¡dSr)r<rÚkillrr r r rB‡szBaseProcess.killcCs*| ¡|j |¡}|dur&t |¡dSr)r<rÚwaitr r)rÚtimeoutÚresr r r r1Žs zBaseProcess.joincCsJ| ¡|turdS|jdur"dS|j ¡}|dur8dSt |¡dSdS)NTF)r<rrrr r)rÚ returncoder r r Úis_alive™s   zBaseProcess.is_alivecCsH|jdur>|j ¡dur tdƒ‚|j ¡d|_|`t |¡d|_dS)Nz^Cannot close a process while it is still running. You should first call join() or terminate().T)rrr;Úcloser?r rr)rr r r rH¬s   zBaseProcess.closecCs|jSr©r2rr r r r'½szBaseProcess.namecCs ||_dSrrI)rr'r r r r'ÁscCs|j dd¡S)NrF)r"Úgetrr r r rÆszBaseProcess.daemoncCs||jd<dS)Nr©r")rÚdaemonicr r r rÍscCs |jdS©NÚauthkeyrKrr r r rNÕszBaseProcess.authkeycCst|ƒ|jd<dSrM)ÚAuthenticationStringr")rrNr r r rNÙscCs"| ¡|jdur|jS|j ¡Sr)r<rrrr r r Úexitcodeàs zBaseProcess.exitcodecCs*| ¡|turt ¡S|jo$|jjSdSr)r<rr$r%rÚpidrr r r ÚidentêszBaseProcess.identcCs2| ¡z|jWSty,tdƒd‚Yn0dS)Nzprocess not started)r<r?ÚAttributeErrorr;rr r r r>÷s  zBaseProcess.sentinelcCsèd}|turd}nL|jrd}n@|jt ¡kr2d}n,|jdurBd}n|j ¡}|durZd}nd}t|ƒjd|j g}|jdurŽ|  d|jj ¡|  d|j¡|  |¡|durÊt   ||¡}|  d |¡|jrÚ|  d ¡d d  |¡S) NÚstartedÚclosedÚunknownÚinitialÚstoppedzname=%rzpid=%sz parent=%sz exitcode=%srz<%s>ú )rr)r&r$r%rrr/r0r2ÚappendrQÚ_exitcode_to_namerJrr1)rrPÚstatusÚinfor r r Ú__repr__s0      zBaseProcess.__repr__c Cs˜ddlm}m}z`z¨|jdur,| |j¡t d¡atƒa |  ¡t }|a t |j |j|ƒatjrnt ¡ ¡z|j ¡| ¡W~n~0| d¡z| ¡d}W| ¡n | ¡0Wn”ty }zJ|jdurÞd}n.t|jtƒrò|j}ntj  t!|jƒd¡d}WYd}~n:d}~0d}ddl"}tj  d|j#¡| $¡Yn0Wt %¡| d|¡| &¡n t %¡| d|¡| &¡0|S)Né)ÚutilÚcontextz child process calling self.run()rÚ z Process %s: z process exiting with exitcode %d)'Úr`raÚ _start_methodÚ_force_start_methodÚ itertoolsr9r Úsetr Ú _close_stdinrÚ_ParentProcessr(r&rÚ threadingÚ_HAVE_THREAD_NATIVE_IDÚ main_threadÚ_set_native_idÚ_finalizer_registryÚclearÚ_run_after_forkersr]r=Ú_exit_functionÚ SystemExitÚcodeÚ isinstanceÚintÚsysÚstderrÚwriterÚ tracebackr'Ú print_excÚ _shutdownÚ_flush_std_streams)rÚparent_sentinelr`raÚ old_processrPÚeryr r r Ú _bootstrap"sT    ÿ       þ zBaseProcess._bootstrap)N)N)r0Ú __module__Ú __qualname__rr:r<r=r@rArBr1rGrHÚpropertyr'ÚsetterrrNrPrRrQr>r^r€r r r r rGsB ÿ           rc@seZdZdd„ZdS)rOcCs,ddlm}|ƒdurtdƒ‚tt|ƒffS)Nr_)Úget_spawning_popenzJPickling an AuthenticationString object is disallowed for security reasons)rar…Ú TypeErrorrOÚbytes)rr…r r r Ú __reduce__Xs   ÿzAuthenticationString.__reduce__N)r0rr‚rˆr r r r rOWsrOc@s6eZdZdd„Zdd„Zedd„ƒZd dd „ZeZdS) ricCs4d|_||_||_d|_d|_d|_||_i|_dS)Nr F)r!r2Ú_pidr&rr)r?r")rr'rQr>r r r r:hsz_ParentProcess.__init__cCsddlm}||jgdd S©Nr)rC)rD©Úmultiprocessing.connectionrCr?)rrCr r r rGrs z_ParentProcess.is_alivecCs|jSr)r‰rr r r rRvsz_ParentProcess.identNcCs ddlm}||jg|ddSrŠr‹)rrDrCr r r r1zs z_ParentProcess.join)N) r0rr‚r:rGrƒrRr1rQr r r r rifs    ric@seZdZdd„Zdd„ZdS)Ú _MainProcesscCs8d|_d|_d|_d|_d|_tt d¡ƒddœ|_dS)Nr Ú MainProcessFé z/mp)rNÚ semprefix) r!r2r&rr)rOr$Úurandomr"rr r r r:‰s ÿz_MainProcess.__init__cCsdSrr rr r r rH›sz_MainProcess.closeN)r0rr‚r:rHr r r r r‡srr_éZSIGÚ_r)$Ú__all__r$rvÚsignalrfrjÚ _weakrefsetrÚpathÚabspathÚgetcwdÚ ORIGINAL_DIRÚOSErrorrrrr Úobjectrr‡rOrirrrr9r rgr r[r Ú__dict__Úitemsr'Úsignumr3r r r r Ú s<     !