grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/20263 Õì2a…¿ã@sxddlZddlZddlmZddlmZddl m Z ddl m Z mZyddlmZWn ek rtddlmZYnXddd d d d d ddddddddddddddgZejZejZejZejZejZy ejZWne k rädZYnXej!Z![da"da#dd„Z$dd„Z%eZ&dd„ZGdd „d ƒZ'e'Z(Gd!d „d ƒZ)Gd"d„dƒZ*Gd#d„de*ƒZ+Gd$d„dƒZ,Gd%d„dƒZ-Gd&d„de.ƒZ/eƒj0Z1e1ƒd?d(d)„Z2eƒa3iZ4iZ5e ƒZ6Gd*d„dƒZ7Gd+d„de7ƒZ8Gd,d-„d-e7ƒZ9Gd.d/„d/e7ƒZ:d0d „Z;e;Zd2d3„Z?d4d „Z@dd5lmAZAe9ƒaBd6d7„ZCd8d9„ZDd:d „ZEydd;lmFZGWn"ek �rjdd„ZIdS)@éN)Ú monotonic)Ú format_exc)ÚWeakSet)ÚisliceÚcount)ÚdequeÚ get_identÚ active_countÚ ConditionÚcurrent_threadÚ enumerateÚ main_threadÚ TIMEOUT_MAXÚEventÚLockÚRLockÚ SemaphoreÚBoundedSemaphoreÚThreadÚBarrierÚBrokenBarrierErrorÚTimerÚ ThreadErrorÚ setprofileÚsettraceÚlocalÚ stack_sizecCs|adS)N)Ú _profile_hook)Úfunc©rú./opt/alt/python36/lib64/python3.6/threading.pyr2scCs|adS)N)Ú _trace_hook)rrrr r<scOstdkrt||ŽSt||ŽS)N)Ú_CRLockÚ_PyRLock)ÚargsÚkwargsrrr rJs  c@sReZdZdd„Zdd„Zddd„ZeZd d „Zd d „Zd d„Z dd„Z dd„Z dS)Ú_RLockcCstƒ|_d|_d|_dS)Nr)Ú_allocate_lockÚ_blockÚ_ownerÚ_count)Úselfrrr Ú__init__asz_RLock.__init__cCs^|j}yt|j}Wntk r(YnXd|jjƒr:dnd|jj|jj||j t t |ƒƒfS)Nz)<%s %s.%s object owner=%r count=%d at %s>ÚlockedZunlocked) r)Ú_activeÚnameÚKeyErrorr(r-Ú __class__Ú __module__Ú __qualname__r*ÚhexÚid)r+Úownerrrr Ú__repr__fsz_RLock.__repr__TécCsDtƒ}|j|kr"|jd7_dS|jj||ƒ}|r@||_d|_|S)Nr8)rr)r*r(Úacquire)r+ÚblockingÚtimeoutÚmeÚrcrrr r9us z_RLock.acquirecCs<|jtƒkrtdƒ‚|jd|_}|s8d|_|jjƒdS)Nzcannot release un-acquired lockr8)r)rÚ RuntimeErrorr*r(Úrelease)r+rrrr r?›s  z_RLock.releasecCs |jƒdS)N)r?)r+ÚtÚvÚtbrrr Ú__exit__²sz_RLock.__exit__cCs|jjƒ|\|_|_dS)N)r(r9r*r))r+Ústaterrr Ú_acquire_restore·s z_RLock._acquire_restorecCs<|jdkrtdƒ‚|j}d|_|j}d|_|jjƒ||fS)Nrzcannot release un-acquired lock)r*r>r)r(r?)r+rr6rrr Ú _release_save»s  z_RLock._release_savecCs |jtƒkS)N)r)r)r+rrr Ú _is_ownedÅsz_RLock._is_ownedNéÿÿÿÿ)TrH) Ú__name__r2r3r,r7r9Ú __enter__r?rCrErFrGrrrr r&Ws  $ r&c@speZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z ddd„Z ddd„Z ddd„Z dd„Z e ZdS)r NcCs–|dkrtƒ}||_|j|_|j|_y |j|_Wntk rDYnXy |j|_Wntk rfYnXy |j|_Wntk rˆYnXtƒ|_ dS)N) rÚ_lockr9r?rFÚAttributeErrorrErGÚ_dequeÚ_waiters)r+Úlockrrr r,×s$   zCondition.__init__cCs |jjƒS)N)rKrJ)r+rrr rJïszCondition.__enter__cGs |jj|ŽS)N)rKrC)r+r$rrr rCòszCondition.__exit__cCsd|jt|jƒfS)Nz)rKÚlenrN)r+rrr r7õszCondition.__repr__cCs|jjƒdS)N)rKr?)r+rrr rFøszCondition._release_savecCs|jjƒdS)N)rKr9)r+Úxrrr rEûszCondition._acquire_restorecCs"|jjdƒr|jjƒdSdSdS)NrFT)rKr9r?)r+rrr rGþs  zCondition._is_ownedcCs¬|jƒstdƒ‚tƒ}|jƒ|jj|ƒ|jƒ}d}z:|dkrN|jƒd}n |dkrd|jd|ƒ}n |jdƒ}|S|j|ƒ|s¦y|jj|ƒWnt k r¤YnXXdS)Nzcannot wait on un-acquired lockFTr) rGr>r'r9rNÚappendrFrEÚremoveÚ ValueError)r+r;ÚwaiterZ saved_stateZgotitrrr Úwaits*   zCondition.waitcCs\d}|}|ƒ}xH|sV|dk rD|dkr0tƒ|}n|tƒ}|dkrDP|j|ƒ|ƒ}qW|S)Nr)Ú_timerV)r+Ú predicater;ÚendtimeZwaittimeÚresultrrr Úwait_for7s    zCondition.wait_forr8c Csj|jƒstdƒ‚|j}tt||ƒƒ}|s,dSx8|D]0}|jƒy|j|ƒWq2tk r`Yq2Xq2WdS)Nz!cannot notify on un-acquired lock)rGr>rNrMÚ_islicer?rSrT)r+ÚnZ all_waitersZwaiters_to_notifyrUrrr ÚnotifyNs  zCondition.notifycCs|jt|jƒƒdS)N)r^rPrN)r+rrr Ú notify_alleszCondition.notify_all)N)N)N)r8)rIr2r3r,rJrCr7rFrErGrVr[r^r_Z notifyAllrrrr r Ës  0   c@s4eZdZd dd„Zd dd„ZeZdd „Zd d „ZdS)rr8cCs&|dkrtdƒ‚ttƒƒ|_||_dS)Nrz$semaphore initial value must be >= 0)rTr rÚ_condÚ_value)r+Úvaluerrr r,}s zSemaphore.__init__TNc Cs˜| r|dk rtdƒ‚d}d}|j�jxb|jdkrv|s8P|dk rh|dkrTtƒ|}n|tƒ}|dkrhP|jj|ƒq(W|jd8_d}WdQRX|S)Nz.can't specify timeout for non-blocking acquireFrr8T)rTr`rarWrV)r+r:r;r=rYrrr r9ƒs$   zSemaphore.acquirec Cs.|j�|jd7_|jjƒWdQRXdS)Nr8)r`rar^)r+rrr r?²szSemaphore.releasecCs |jƒdS)N)r?)r+r@rArBrrr rC½szSemaphore.__exit__)r8)TN)rIr2r3r,r9rJr?rCrrrr rqs   - c@seZdZddd„Zdd„ZdS)rr8cCstj||ƒ||_dS)N)rr,Ú_initial_value)r+rbrrr r,Òs zBoundedSemaphore.__init__c CsB|j�2|j|jkrtdƒ‚|jd7_|jjƒWdQRXdS)Nz!Semaphore released too many timesr8)r`rarcrTr^)r+rrr r?Ös  zBoundedSemaphore.releaseN)r8)rIr2r3r,r?rrrr rÁs c@sBeZdZdd„Zdd„Zdd„ZeZdd„Zd d „Zdd d „Z d S)rcCsttƒƒ|_d|_dS)NF)r rr`Ú_flag)r+rrr r,òs zEvent.__init__cCs|jjtƒƒdS)N)r`r,r)r+rrr Ú_reset_internal_locksöszEvent._reset_internal_lockscCs|jS)N)rd)r+rrr Úis_setúsz Event.is_setc Cs&|j�d|_|jjƒWdQRXdS)NT)r`rdr_)r+rrr Úsetsz Event.setc Cs|j� d|_WdQRXdS)NF)r`rd)r+rrr Úclear sz Event.clearNc Cs,|j�|j}|s|jj|ƒ}|SQRXdS)N)r`rdrV)r+r;Zsignaledrrr rVs  z Event.wait)N) rIr2r3r,rerfZisSetrgrhrVrrrr rçs   c@s|eZdZddd„Zddd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z e dd„ƒZ e dd„ƒZe dd„ƒZdS)rNcCs.ttƒƒ|_||_||_||_d|_d|_dS)Nr)r rr`Ú_actionÚ_timeoutÚ_partiesÚ_stater*)r+ÚpartiesÚactionr;rrr r,?s zBarrier.__init__cCs€|dkr|j}|j�b|jƒ|j}|jd7_z&|d|jkrL|jƒn |j|ƒ|S|jd8_|jƒXWdQRXdS)Nr8)rjr`Ú_enterr*rkÚ_releaseÚ_waitÚ_exit)r+r;Úindexrrr rVOs   z Barrier.waitcCs,x|jdkr|jjƒqW|jdkr(t‚dS)Nr8rrH)rHr8)rlr`rVr)r+rrr roms   zBarrier._enterc Cs>y"|jr|jƒd|_|jjƒWn|jƒ‚YnXdS)Nr8)rirlr`r_Ú_break)r+rrr rpxszBarrier._releasecs4ˆjj‡fdd„|ƒs"ˆjƒt‚ˆjdkr0t‚dS)Ncs ˆjdkS)Nr)rlr)r+rr Ú‡szBarrier._wait..r)r`r[rtrrl)r+r;r)r+r rq†s  z Barrier._waitcCs(|jdkr$|jdkr$d|_|jjƒdS)Nrr8rH)rHr8)r*rlr`r_)r+rrr rr‘s  z Barrier._exitc CsT|j�D|jdkr6|jdkr$d|_q<|jdkr||_n tƒj|_d|_ d|_ t ƒ|_ d|_ d|_tj|_tj|ƒdS)NFT)Ú_targetÚstrr€Ú_nameÚ_argsÚ_kwargsÚ _daemonicr r�Ú_identÚ _tstate_lockrÚ_startedÚ _is_stoppedÚ _initializedÚ_sysÚstderrÚ_stderrÚ _danglingÚadd)r+ÚgroupÚtargetr/r$r%r�rrr r,õs  zThread.__init__cCs(|jjƒ|r|jƒn d|_d|_dS)NT)rŠreÚ_set_tstate_lockr‹r‰)r+Úis_aliverrr re"s   zThread._reset_internal_lockscCs^d}|jjƒrd}|jƒ|jr$d}|jr2|d7}|jdk rJ|d|j7}d|jj|j|fS)NÚinitialZstartedZstoppedz daemonz %sz <%s(%s, %s)>) rŠrfr•r‹r‡rˆr1rIr„)r+Ústatusrrr r7.s  zThread.__repr__cCs„|jstdƒ‚|jjƒr tdƒ‚t�|t|<WdQRXyt|jfƒWn,tk rtt� t|=WdQRX‚YnX|jj ƒdS)Nzthread.__init__() not calledz threads can only be started once) rŒr>rŠrfÚ_active_limbo_lockÚ_limboÚ_start_new_threadÚ _bootstrapÚ ExceptionrV)r+rrr Ústart<s  z Thread.startc Cs.z|jr|j|j|jŽWd|`|`|`XdS)N)r‚r…r†)r+rrr ÚrunUs z Thread.runc Cs2y |jƒWn |jr&tdkr&dS‚YnXdS)N)Ú_bootstrap_innerr‡r�)r+rrr r›fs  zThread._bootstrapcCs tƒ|_dS)N)rrˆ)r+rrr Ú _set_identzszThread._set_identcCstƒ|_|jjƒdS)N)Ú _set_sentinelr‰r9)r+rrr r”}szThread._set_tstate_lockc2Csˆ�zT|jƒ|jƒ|jjƒt�|t|j<t|=WdQRXtrLt j tƒt rZt j t ƒzöy |j ƒWnätk r|YnÒt r¬t jdk r¬td|jtƒft jd�nœ|jdk �rH|jƒ\}}}zxtd|jd|jd�td|jd�x6|�r$td|jjj|j|jjjf|jd�|j}qðWtd||f|jd�Wd~~~XYnXWdXWdt� y ttƒ=Wn YnXWdQRXXdS)NzException in thread %s: %s)ÚfilezException in thread z2 (most likely raised during interpreter shutdown):z"Traceback (most recent call last):z File "%s", line %s, in %sz%s: %s)r r”rŠrgr˜r.rˆr™r!r�rrrržÚ SystemExitrŽÚprintr/Ú _format_excr�Ú _exc_infoÚtb_frameÚf_codeÚ co_filenameÚ tb_linenoÚco_nameÚtb_nextr)r+Úexc_typeÚ exc_valueZexc_tbrrr rŸ…sT         zThread._bootstrap_innercCs|j}|dk rd|_d|_dS)NT)r‰r‹)r+rOrrr Ú_stopÆsz Thread._stopcCsByt�ttƒ=WdQRXWn tk r<dtjkr8‚YnXdS)NZdummy_threading)r˜r.rr0r�Úmodules)r+rrr Ú_deleteÝs  zThread._deletecCsZ|jstdƒ‚|jjƒs tdƒ‚|tƒkr2tdƒ‚|dkrD|jƒn|jt|dƒd�dS)NzThread.__init__() not calledz'cannot join thread before it is startedzcannot join current threadr)r;)rŒr>rŠrfr Ú_wait_for_tstate_lockÚmax)r+r;rrr Újoins   z Thread.joinTr8cCs0|j}|dkrn|j||ƒr,|jƒ|jƒdS)N)r‰r9r?r¯)r+Úblockr;rOrrr r²&s  zThread._wait_for_tstate_lockcCs|jS)N)r„)r+rrr r/4s z Thread.namecCst|ƒ|_dS)N)rƒr„)r+r/rrr r/?scCs|jS)N)rˆ)r+rrr ÚidentDs z Thread.identcCs(|js|jjƒ rdS|jdƒ|j S)NF)r‹rŠrfr²)r+rrr r•Ps  zThread.is_alivecCs|jS)N)r‡)r+rrr r�`sz Thread.daemoncCs*|jstdƒ‚|jjƒr tdƒ‚||_dS)NzThread.__init__() not calledz)cannot set daemon status of active thread)rŒr>rŠrfr‡)r+Údaemonicrrr r�ps  cCs|jS)N)r�)r+rrr ÚisDaemonxszThread.isDaemoncCs ||_dS)N)r�)r+r·rrr Ú setDaemon{szThread.setDaemoncCs|jS)N)r/)r+rrr ÚgetName~szThread.getNamecCs ||_dS)N)r/)r+r/rrr ÚsetName�szThread.setName)NrH)TrH)rIr2r3rŒr�Úexc_infor¦r,rer7r�ržr›r r”rŸr¯r±r´r²r|r/Úsetterr¶r•ZisAliver�r¸r¹rºr»rrrr râs6 , A# &    c@s&eZdZddd„Zdd„Zdd„ZdS) rNcCsFtj|ƒ||_||_|dk r"|ng|_|dk r4|ni|_tƒ|_dS)N)rr,ÚintervalÚfunctionr$r%rÚfinished)r+r¾r¿r$r%rrr r,�s  zTimer.__init__cCs|jjƒdS)N)rÀrg)r+rrr Úcancel—sz Timer.cancelcCs6|jj|jƒ|jjƒs(|j|j|jŽ|jjƒdS)N)rÀrVr¾rfr¿r$r%rg)r+rrr rž›s z Timer.run)NN)rIr2r3r,rÁržrrrr r†s c@seZdZdd„ZdS)Ú _MainThreadc CsHtj|ddd�|jƒ|jjƒ|jƒt�|t|j<WdQRXdS)NZ MainThreadF)r/r�) rr,r”rŠrgr r˜r.rˆ)r+rrr r,¦s  z_MainThread.__init__N)rIr2r3r,rrrr r¤srÂc@s.eZdZdd„Zdd„Zdd„Zd dd „ZdS) Ú _DummyThreadc CsDtj|tdƒdd�|jjƒ|jƒt�|t|j<WdQRXdS)NzDummy-%dT)r/r�) rr,r€rŠrgr r˜r.rˆ)r+rrr r,¹s  z_DummyThread.__init__cCsdS)Nr)r+rrr r¯Ász_DummyThread._stopcCsdS)NTr)r+rrr r•Äsz_DummyThread.is_aliveNcCsdS)Nr)r+r;rrr r´Èsz_DummyThread.join)N)rIr2r3r,r¯r•r´rrrr r÷srÃc Cs&y ttƒStk r tƒSXdS)N)r.rr0rÃrrrr r Îs c Cs t�ttƒttƒSQRXdS)N)r˜rPr.r™rrrr r ÜscCsttjƒƒttjƒƒS)N)Úlistr.Úvaluesr™rrrr Ú _enumerateèsrÆc Cs(t�ttjƒƒttjƒƒSQRXdS)N)r˜rÄr.rÅr™rrrr r ìs)rcCs8tj}|jƒtjƒtƒ}x|r2|jƒtƒ}qWdS)N)Ú _main_threadr‰r?r¯Ú_pickSomeNonDaemonThreadr´)Ztlockr@rrr Ú _shutdownÿsrÉcCs(x"tƒD]}|j r|jƒr|SqWdS)N)r r�r•)r@rrr rÈs rÈcCstS)N)rÇrrrr r s)Ú_local)rc Csžtƒai}tƒ}|at�|ttƒƒ}|jtƒxF|D]>}||kr`|jdƒt ƒ}||_ |||<q4|jdƒ|j ƒq4Wt j ƒtj ƒtj|ƒWdQRXdS)NTF)r'r˜r rÇrgrÆÚupdater�rerrˆr¯r™rhr.)Z new_activeZcurrentZthreadsZthreadr¶rrr Ú _after_fork(s&        rÌ)r})JÚsysr�Ú_threadZtimerrWÚ tracebackrr¥Ú _weakrefsetrÚ itertoolsrr\rr*Ú _collectionsrrMÚ ImportErrorÚ collectionsÚ__all__Ústart_new_threadršÚ allocate_lockr'r¡rÚerrorrrr"rLrrr!rrrr&r#r rrrrr>rÚ__next__r~r€r˜r.r™r�rrrÂrÃr Z currentThreadr Z activeCountrÆr rrÇrÉrÈr rÊrZ_threading_localrÌrrrr ÚsŽ           q'P&O '