grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026 й¼]ƒ¿ã@sOddlZddlZddlmZddlmZddl m Z ddl m Z mZyddlmZWn"ek r–ddlmZYnXddd d d d d ddddddddddgZejZejZejZejZejZy ejZWne k r$dZYnXej!Z![da"da#dd„Z$dd„Z%eZ&dd „ZGdd„dƒZ'e'Z(Gdd„dƒZ)Gdd„dƒZ*Gdd„de*ƒZ+Gd d „d ƒZ,Gd!d„dƒZ-Gd"d#„d#e.ƒZ/eƒj0Z1e1ƒd$d%d&„Z2eƒa3iZ4iZ5e ƒZ6Gd'd„dƒZ7Gd(d„de7ƒZ8Gd)d*„d*e7ƒZ9Gd+d,„d,e7ƒZ:d-d „Z;e;Z<d.d„Z=e=Z>d/d0„Z?d1d „Z@dd2lmAZAe9ƒaBd3d4„ZCd5d6„ZDd7d8„ZEydd9lmFZGWn"ek r>dd:lHmGZGYnXd;d<„ZIdS)=éN)Ú monotonic)Ú format_exc)ÚWeakSet)ÚisliceÚcount)ÚdequeÚ active_countÚ ConditionÚcurrent_threadÚ enumerateÚEventÚLockÚRLockÚ SemaphoreÚBoundedSemaphoreÚThreadÚBarrierÚTimerÚ ThreadErrorÚ setprofileÚsettraceÚlocalÚ stack_sizecCs |adS)N)Ú _profile_hook)Úfunc©rú./opt/alt/python35/lib64/python3.5/threading.pyr0scCs |adS)N)Ú _trace_hook)rrrrr:scOs&tdkrt||ŽSt||ŽS)N)Ú_CRLockÚ_PyRLock)ÚargsÚkwargsrrrrHs  c@s|eZdZdd„Zdd„Zdddd„ZeZd d „Zd d „Zd d„Z dd„Z dd„Z dS)Ú_RLockcCs"tƒ|_d|_d|_dS)Nr)Ú_allocate_lockÚ_blockÚ_ownerÚ_count)ÚselfrrrÚ__init___s  z_RLock.__init__cCsy|j}yt|j}Wntk r.YnXd|jjƒrGdnd|jj|jj||j t t |ƒƒfS)Nz)<%s %s.%s object owner=%r count=%d at %s>ÚlockedÚunlocked) r%Ú_activeÚnameÚKeyErrorr$r)Ú __class__Ú __module__Ú __qualname__r&ÚhexÚid)r'ÚownerrrrÚ__repr__ds    z_RLock.__repr__TécCs\tƒ}|j|kr+|jd7_dS|jj||ƒ}|rX||_d|_|S)Nr5)Ú get_identr%r&r$Úacquire)r'ÚblockingÚtimeoutÚmeÚrcrrrr7ss   z_RLock.acquirecCsR|jtƒkrtdƒ‚|jd|_}|sNd|_|jjƒdS)Nzcannot release un-acquired lockr5)r%r6Ú RuntimeErrorr&r$Úrelease)r'rrrrr=™s   z_RLock.releasecCs|jƒdS)N)r=)r'ÚtÚvÚtbrrrÚ__exit__°sz_RLock.__exit__cCs#|jjƒ|\|_|_dS)N)r$r7r&r%)r'ÚstaterrrÚ_acquire_restoreµs z_RLock._acquire_restorecCsV|jdkrtdƒ‚|j}d|_|j}d|_|jjƒ||fS)Nrzcannot release un-acquired lock)r&r<r%r$r=)r'rr3rrrÚ _release_save¹s      z_RLock._release_savecCs|jtƒkS)N)r%r6)r'rrrÚ _is_ownedÃsz_RLock._is_ownedNéÿÿÿÿ) Ú__name__r/r0r(r4r7Ú __enter__r=rArCrDrErrrrr"Us  $    r"c@s¦eZdZddd„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 rZYnXy|j|_Wntk rYnXy|j|_Wntk r¤YnXtƒ|_ dS)N) rÚ_lockr7r=rDÚAttributeErrorrCrEÚ_dequeÚ_waiters)r'Úlockrrrr(Õs$        zCondition.__init__cCs |jjƒS)N)rIrH)r'rrrrHíszCondition.__enter__cGs|jj|ŒS)N)rIrA)r'r rrrrAðszCondition.__exit__cCsd|jt|jƒfS)Nz)rIÚlenrL)r'rrrr4ószCondition.__repr__cCs|jjƒdS)N)rIr=)r'rrrrDöszCondition._release_savecCs|jjƒdS)N)rIr7)r'ÚxrrrrCùszCondition._acquire_restorecCs+|jjdƒr#|jjƒdSdSdS)NrFT)rIr7r=)r'rrrrEüs zCondition._is_ownedcCsè|jƒstdƒ‚tƒ}|jƒ|jj|ƒ|jƒ}d}zW|dkro|jƒd}n0|dkr�|jd|ƒ}n|jdƒ}|SWd|j|ƒ|sãy|jj|ƒWnt k râYnXXdS)Nzcannot wait on un-acquired lockFTr) rEr<r#r7rLÚappendrDrCÚremoveÚ ValueError)r'r9ÚwaiterÚ saved_stateÚgotitrrrÚwaits*           zCondition.waitcCs~d}|}|ƒ}xb|sy|dk r`|dkrFtƒ|}n|tƒ}|dkr`P|j|ƒ|ƒ}qW|S)Nr)Ú_timerV)r'Ú predicater9ÚendtimeÚwaittimeÚresultrrrÚwait_for5s        zCondition.wait_forr5c Cs…|jƒstdƒ‚|j}tt||ƒƒ}|s@dSx>|D]6}|jƒy|j|ƒWqGtk r|YqGXqGWdS)Nz!cannot notify on un-acquired lock)rEr<rLrKÚ_islicer=rQrR)r'ÚnÚ all_waitersÚwaiters_to_notifyrSrrrÚnotifyLs      zCondition.notifycCs|jt|jƒƒdS)N)rarNrL)r'rrrÚ notify_allcszCondition.notify_all)rGr/r0r(rHrAr4rDrCrErVr\rarbÚ notifyAllrrrrr És       0 c@sOeZdZddd„Zdddd„ZeZdd „Zd d „ZdS) rr5cCs7|dkrtdƒ‚ttƒƒ|_||_dS)Nrz$semaphore initial value must be >= 0)rRr r Ú_condÚ_value)r'Úvaluerrrr({s  zSemaphore.__init__TNc CsÄ| r|dk rtdƒ‚d}d}|j�‰x�|jdkr£|sNP|dk r�|dkrvtƒ|}n|tƒ}|dkr�P|jj|ƒq8W|jd8_d}WdQRX|S)Nz.can't specify timeout for non-blocking acquireFrr5T)rRrdrerWrV)r'r8r9r;rYrrrr7�s$       zSemaphore.acquirec Cs1|j�!|jd7_|jjƒWdQRXdS)Nr5)rdrera)r'rrrr=°s zSemaphore.releasecCs|jƒdS)N)r=)r'r>r?r@rrrrA»szSemaphore.__exit__)rGr/r0r(r7rHr=rArrrrros - c@s+eZdZddd„Zdd„ZdS)rr5cCstj||ƒ||_dS)N)rr(Ú_initial_value)r'rfrrrr(ÐszBoundedSemaphore.__init__c CsO|j�?|j|jkr(tdƒ‚|jd7_|jjƒWdQRXdS)Nz!Semaphore released too many timesr5)rdrergrRra)r'rrrr=Ôs  zBoundedSemaphore.releaseN)rGr/r0r(r=rrrrr¿s c@saeZdZdd„Zdd„Zdd„ZeZdd„Zd d „Zd d d „Z d S)r cCsttƒƒ|_d|_dS)NF)r r rdÚ_flag)r'rrrr(ðszEvent.__init__cCs|jjtƒƒdS)N)rdr(r )r'rrrÚ_reset_internal_locksôszEvent._reset_internal_lockscCs|jS)N)rh)r'rrrÚis_setøsz Event.is_setc Cs+|j�d|_|jjƒWdQRXdS)NT)rdrhrb)r'rrrÚsetþs  z Event.setc Cs|j�d|_WdQRXdS)NF)rdrh)r'rrrÚclear s z Event.clearNc Cs:|j�*|j}|s+|jj|ƒ}|SWdQRXdS)N)rdrhrV)r'r9ÚsignaledrrrrVs   z Event.wait) rGr/r0r(rirjÚisSetrkrlrVrrrrr ås    c@s»eZdZdddd„Zddd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z e dd„ƒZ e dd„ƒZe dd„ƒZdS)rNcCsCttƒƒ|_||_||_||_d|_d|_dS)Nr)r r rdÚ_actionÚ_timeoutÚ_partiesÚ_stater&)r'ÚpartiesÚactionr9rrrr(=s     zBarrier.__init__cCsž|dkr|j}|j�y|jƒ|j}|jd7_z5|d|jkrd|jƒn |j|ƒ|SWd|jd8_|jƒXWdQRXdS)Nr5)rprdÚ_enterr&rqÚ_releaseÚ_waitÚ_exit)r'r9ÚindexrrrrVMs       z Barrier.waitcCs<x |jdkr"|jjƒqW|jdkr8t‚dS)Nr5rrF)rFr5)rrrdrVÚBrokenBarrierError)r'rrrruks zBarrier._enterc CsIy-|jr|jƒd|_|jjƒWn|jƒ‚YnXdS)Nr5)rorrrdrbÚ_break)r'rrrrvvs    zBarrier._releasecsJˆjj‡fdd†|ƒs1ˆjƒt‚ˆjdkrFt‚dS)Ncs ˆjdkS)Nr)rrr)r'rrÚ…szBarrier._wait..r)rdr\r{rzrr)r'r9r)r'rrw„s ! z Barrier._waitcCs8|jdkr4|jdkr4d|_|jjƒdS)Nrr5rF)rFr5)r&rrrdrb)r'rrrrx�s z Barrier._exitc Csp|j�`|jdkrO|jdkr4d|_qX|jdkrXd|_n d|_|jjƒWdQRXdS)Nrr5érFéþÿÿÿrF)rdr&rrrb)r'rrrÚreset–s    z Barrier.resetc Cs|j�|jƒWdQRXdS)N)rdr{)r'rrrÚabortªs z Barrier.abortcCsd|_|jjƒdS)Nr}r~)rrrdrb)r'rrrr{´s zBarrier._breakcCs|jS)N)rq)r'rrrrsºszBarrier.partiescCs|jdkr|jSdS)Nr)rrr&)r'rrrÚ n_waiting¿szBarrier.n_waitingcCs |jdkS)Nr}r~)rr)r'rrrÚbrokenÈszBarrier.broken)rGr/r0r(rVrurvrwrxrr€r{Úpropertyrsr�r‚rrrrr4s      c@seZdZdS)rzN)rGr/r0rrrrrzÎs rzz Thread-%dcCs |tƒS)N)Ú_counter)ÚtemplaterrrÚ_newnameÕsr†c @s{eZdZdZejZdddfddddd„Zdd„Zdd „Z d d „Z d d „Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zddd„Zdd2dd„Zed d!„ƒZejd"d!„ƒZed#d$„ƒZd%d&„ZeZed'd(„ƒZejd)d(„ƒZd*d+„Zd,d-„Zd.d/„Zd0d1„ZdS)3rFNÚdaemoncCs¹|dkri}||_t|p*tƒƒ|_||_||_|dk r]||_ntƒ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‡rrrr(ós             zThread.__init__cCs6|jjƒ|r |jƒnd|_d|_dS)NT)r�riÚ_set_tstate_lockr‘r�)r'Úis_aliverrrri s    zThread._reset_internal_lockscCs�d}|jjƒrd}|jƒ|jr4d}|jrG|d7}|jdk rg|d|j7}d|jj|j|fS)NÚinitialÚstartedÚstoppedz daemonz %sz <%s(%s, %s)>) r�rjr›r‘r�rŽr.rGrŠ)r'Ústatusrrrr4,s    zThread.__repr__cCsš|jstdƒ‚|jjƒr0tdƒ‚t�|t|‚YnXdS)NÚdummy_threading)r r+r6r-r“Úmodules)r'rrrÚ_deleteÛs  zThread._deletecCs�|jstdƒ‚|jjƒs0tdƒ‚|tƒkrKtdƒ‚|dkrd|jƒn|jdt|dƒƒdS)NzThread.__init__() not calledz'cannot join thread before it is startedzcannot join current threadr9r)r’r<r�rjr Ú_wait_for_tstate_lockÚmax)r'r9rrrÚjoinþs      z Thread.joinTr5cCsB|j}|dkrn&|j||ƒr>|jƒ|jƒdS)N)r�r7r=r¸)r'Úblockr9rMrrrr¼$s    zThread._wait_for_tstate_lockcCs|jS)N)rŠ)r'rrrr,2s z Thread.namecCst|ƒ|_dS)N)r‰rŠ)r'r,rrrr,=scCs|jS)N)rŽ)r'rrrÚidentBs z Thread.identcCs2|js|jjƒ rdS|jdƒ|j S)NF)r‘r�rjr¼)r'rrrr›Ns  zThread.is_alivecCs|jS)N)r�)r'rrrr‡^sz Thread.daemoncCs=|jstdƒ‚|jjƒr0tdƒ‚||_dS)NzThread.__init__() not calledz)cannot set daemon status of active thread)r’r<r�rjr�)r'Údaemonicrrrr‡ns    cCs|jS)N)r‡)r'rrrÚisDaemonvszThread.isDaemoncCs ||_dS)N)r‡)r'rÁrrrÚ setDaemonyszThread.setDaemoncCs|jS)N)r,)r'rrrÚgetName|szThread.getNamecCs ||_dS)N)r,)r'r,rrrÚsetNameszThread.setNamerF)rGr/r0r’r“Úexc_infor®r(rir4r¥r¦r£r¨ršr§r¸r»r¾r¼rƒr,ÚsetterrÀr›ÚisAliver‡rÂrÃrÄrÅrrrrràs6   ,       A  #&     c@s:eZdZdddd„Zdd„Zdd„ZdS)rNcCsetj|ƒ||_||_|dk r1|ng|_|dk rL|ni|_tƒ|_dS)N)rr(ÚintervalÚfunctionr r!r Úfinished)r'rÉrÊr r!rrrr(�s    zTimer.__init__cCs|jjƒdS)N)rËrk)r'rrrÚcancel•sz Timer.cancelcCsI|jj|jƒ|jjƒs8|j|j|jŽ|jjƒdS)N)rËrVrÉrjrÊr r!rk)r'rrrr¦™sz Timer.run)rGr/r0r(rÌr¦rrrrr„s  c@seZdZdd„ZdS)Ú _MainThreadc CsYtj|ddddƒ|jƒ|jjƒ|jƒt�|t|jrrrÚ _shutdownýs       rÖcCs2x+tƒD] }|j r |jƒr |Sq WdS)N)r r‡r›)r>rrrrÔsrÔcCstS)N)rÓrrrrÚ main_threadsr×)Ú_local)rc CsÍtƒai}tƒ}|at�¢ttƒƒ}|jtƒx]|D]U}||kr†|jdƒt ƒ}||_ |||s‚               q¦P&Oš   ÿ¥