Lc@s6dZddkZyddkZWn ej oeie=nXddkZddkl Z ddk l Z l Z ddklZddklZddd d d d d ddddddddddgZeiZeiZeiZeiZ[eiddeddddeZde fdYZ!e"a#e"a$d Z%d!Z&eZ'd"Z(d#e!fd$YZ)d%Z*d&e!fd'YZ+d(Z,d)e!fd*YZ-d+Z.d,e-fd-YZ/d.Z0d/e!fd0YZ1d1a2d2d3Z3ea4hZ5hZ6de!fd4YZ7d5Z8d6e7fd7YZ9d8e7fd9YZ:d:Z;d;e7fd<YZ<d=Z=e=Z>d>Z?e?Z@d?ZAd@ZBddAklCZCe:iDZEyddBklFZGWn#ej oddCkHlGZGnXdDZIdEZJedFjo eJndS(Gs;Thread module emulating a subset of Java's threading model.iN(twraps(ttimetsleep(t format_exc(tdequet activeCountt active_countt Conditiont currentThreadtcurrent_threadt enumeratetEventtLocktRLockt SemaphoretBoundedSemaphoretThreadtTimert setprofiletsettracetlocalt stack_sizetignoretcategorytmodulet threadingtmessages sys.exc_cleart_VerbosecBseZddZdZRS(cCsdS(N((tselftverbose((s!/usr/lib64/python2.6/threading.pyt__init__JscGsdS(N((Rtargs((s!/usr/lib64/python2.6/threading.pyt_noteLsN(t__name__t __module__tNoneRR (((s!/usr/lib64/python2.6/threading.pyRIs cCs |adS(N(t _profile_hook(tfunc((s!/usr/lib64/python2.6/threading.pyRTscCs |adS(N(t _trace_hook(R%((s!/usr/lib64/python2.6/threading.pyRXscOs t||S(N(t_RLock(Rtkwargs((s!/usr/lib64/python2.6/threading.pyR `sR'cBs\eZd dZdZddZeZdZdZdZ dZ dZ RS( cCs2ti||t|_d|_d|_dS(Ni(RRt_allocate_lockt _RLock__blockR#t _RLock__ownert _RLock__count(RR((s!/usr/lib64/python2.6/threading.pyRes  cCsJ|i}yt|i}Wntj onXd|ii||ifS(Ns<%s owner=%r count=%d>(R+t_activetnametKeyErrort __class__R!R,(Rtowner((s!/usr/lib64/python2.6/threading.pyt__repr__ks icCsat}|i|jo|id|_dS|ii|}|o||_d|_n|S(Ni(t _get_identR+R,R*tacquire(Rtblockingtmetrc((s!/usr/lib64/python2.6/threading.pyR4ts   cCs\|itjotdn|id|_}|pd|_|iindS(Nscannot release un-acquired locki(R+R3t RuntimeErrorR,R#R*trelease(Rtcount((s!/usr/lib64/python2.6/threading.pyR9s  cCs|idS(N(R9(Rtttvttb((s!/usr/lib64/python2.6/threading.pyt__exit__scCs/|\}}|ii||_||_dS(N(R*R4R,R+(Rt count_ownerR:R1((s!/usr/lib64/python2.6/threading.pyt_acquire_restores     cCs;|i}d|_|i}d|_|ii||fS(Ni(R,R+R#R*R9(RR:R1((s!/usr/lib64/python2.6/threading.pyt _release_saves      cCs|itjS(N(R+R3(R((s!/usr/lib64/python2.6/threading.pyt _is_ownedsN( R!R"R#RR2R4t __enter__R9R>R@RARB(((s!/usr/lib64/python2.6/threading.pyR'cs     cOs t||S(N(t _Condition(RR(((s!/usr/lib64/python2.6/threading.pyRsRDcBsteZd d dZdZdZdZdZdZdZ d dZ dd Z d Z e Z RS( c Csti|||djo t}n||_|i|_|i|_y|i|_Wntj onXy|i |_ Wntj onXy|i |_ Wntj onXg|_ dS(N( RRR#R t_Condition__lockR4R9RAtAttributeErrorR@RBt_Condition__waiters(RtlockR((s!/usr/lib64/python2.6/threading.pyRs&     cCs |iiS(N(RERC(R((s!/usr/lib64/python2.6/threading.pyRCscGs|ii|S(N(RER>(RR((s!/usr/lib64/python2.6/threading.pyR>scCsd|it|ifS(Ns(REtlenRG(R((s!/usr/lib64/python2.6/threading.pyR2scCs|iidS(N(RER9(R((s!/usr/lib64/python2.6/threading.pyRAscCs|iidS(N(RER4(Rtx((s!/usr/lib64/python2.6/threading.pyR@scCs-|iido|iitStSdS(Ni(RER4R9tFalsetTrue(R((s!/usr/lib64/python2.6/threading.pyRBs c Cs1|iptdnt}|i|ii||i}z|djo|int|}d}xft o^|id}|oPn|t}|djoPnt |d|d}t |qW|p.y|ii |Wqt j oqXnWd|i|XdS(Nscannot wait on un-acquired lockgMb@?iig?(RBR8R)R4RGtappendRAR#t_timeRLtmint_sleeptremovet ValueErrorR@(Rttimeouttwaitert saved_statetendtimetdelaytgotitt remaining((s!/usr/lib64/python2.6/threading.pytwaits:          icCs|iptdn|i}|| }|pdS|id|||djodpdx?|D]7}|iy|i|Wqmtj oqmXqmWdS(Ns!cannot notify on un-acquired locks"%s.notify(): notifying %d waiter%sitst(RBR8RGR R9RQRR(RtnRGtwaitersRT((s!/usr/lib64/python2.6/threading.pytnotifys    cCs|it|idS(N(R_RIRG(R((s!/usr/lib64/python2.6/threading.pyt notifyAll"sN(R!R"R#RRCR>R2RAR@RBRZR_R`t notify_all(((s!/usr/lib64/python2.6/threading.pyRDs      *  cOs t||S(N(t _Semaphore(RR(((s!/usr/lib64/python2.6/threading.pyR(sRbcBs;eZdddZddZeZdZdZRS(icCsL|djotdnti||tt|_||_dS(Nis$semaphore initial value must be >= 0(RRRRRR t_Semaphore__condt_Semaphore__value(RtvalueR((s!/usr/lib64/python2.6/threading.pyR/s  cCskt}|iixD|idjo|pPn|iiqW|id|_t}|ii|S(Nii(RKRcR4RdRZRLR9(RR5R7((s!/usr/lib64/python2.6/threading.pyR46s  cCs;|ii|id|_|ii|iidS(Ni(RcR4RdR_R9(R((s!/usr/lib64/python2.6/threading.pyR9Ks  cCs|idS(N(R9(RR;R<R=((s!/usr/lib64/python2.6/threading.pyR>TsN(R!R"R#RR4RCR9R>(((s!/usr/lib64/python2.6/threading.pyRb+s   cOs t||S(N(t_BoundedSemaphore(RR(((s!/usr/lib64/python2.6/threading.pyRXsRfcBs&eZdZdddZdZRS(s6Semaphore that checks that # releases is <= # acquiresicCs ti|||||_dS(N(RbRt_initial_value(RReR((s!/usr/lib64/python2.6/threading.pyR]scCs-|i|ijo tdnti|S(Ns!Semaphore released too many times(RdRgRRRbR9(R((s!/usr/lib64/python2.6/threading.pyR9as N(R!R"t__doc__R#RR9(((s!/usr/lib64/python2.6/threading.pyRf[scOs t||S(N(t_Event(RR(((s!/usr/lib64/python2.6/threading.pyR gsRicBsAeZddZdZeZdZdZddZRS(cCs/ti||tt|_t|_dS(N(RRRR t _Event__condRKt _Event__flag(RR((s!/usr/lib64/python2.6/threading.pyRnscCs|iS(N(Rk(R((s!/usr/lib64/python2.6/threading.pytisSetsscCs<|iizt|_|iiWd|iiXdS(N(RjR4RLRkRaR9(R((s!/usr/lib64/python2.6/threading.pytsetxs   cCs/|iiz t|_Wd|iiXdS(N(RjR4RKRkR9(R((s!/usr/lib64/python2.6/threading.pytclears  cCsD|iiz"|ip|ii|nWd|iiXdS(N(RjR4RkRZR9(RRS((s!/usr/lib64/python2.6/threading.pyRZs   N( R!R"R#RRltis_setRmRnRZ(((s!/usr/lib64/python2.6/threading.pyRijs     is Thread-%dcCstda|tS(Ni(t_counter(ttemplate((s!/usr/lib64/python2.6/threading.pyt_newnames cBseZeZeiZeiZdddddddZ dZ dZ dZ dZdZdZdZdZd Zdd Zed Zeid Zed ZdZeZedZeidZdZdZdZdZRS(cCsti|||djo h}n||_t|pt|_||_||_|i |_ d|_ t |_ t|_tt|_t|_ti|_dS(N(RRR#t_Thread__targettstrRrt _Thread__namet _Thread__argst_Thread__kwargst _set_daemont_Thread__daemonict_Thread__identR t_Thread__startedRKt_Thread__stoppedRR t_Thread__blockRLt_Thread__initializedt_syststderrt_Thread__stderr(RtgroupttargetR.RR(R((s!/usr/lib64/python2.6/threading.pyRs         cCs tiS(N(R tdaemon(R((s!/usr/lib64/python2.6/threading.pyRxscCsd}|iio d}n|io d}n|io|d7}n|idj o|d|i7}nd|ii|i|fS(Ntinitialtstartedtstoppeds daemons %ss <%s(%s, %s)>( R{RoR|RyRzR#R0R!Ru(Rtstatus((s!/usr/lib64/python2.6/threading.pyR2s    cCs|iptdn|iiotdnti|t|RCRZ(R((s!/usr/lib64/python2.6/threading.pytstarts     cCsBz(|io|i|i|inWd|`|`|`XdS(N(RsRvRw(R((s!/usr/lib64/python2.6/threading.pytruns cCs;y|iWn&|iotdjodSnXdS(N(t_Thread__bootstrap_innerRyRR#(R((s!/usr/lib64/python2.6/threading.pyt __bootstraps cCst|_dS(N(R3Rz(R((s!/usr/lib64/python2.6/threading.pyt _set_identscCsz|i|iiti|t|iRCt _Thread__stopR3(Rtexc_typet exc_valuetexc_tb((s!/usr/lib64/python2.6/threading.pyt__bootstrap_inners^         cCs4|iit|_|ii|iidS(N(R}R4RLR|RaR9(R((s!/usr/lib64/python2.6/threading.pyt__stopLs   c CsWy&tiiztt=WdQXWn*tj odtijoqSnXdS(sARemove current thread from the dict of currently running threads.Ntdummy_threading(RR>RCR-R3R/Rtmodules(R((s!/usr/lib64/python2.6/threading.pyt__deleteRs cCs|iptdn|iiptdn|tjotdn|iiz|djo#xn|ip|ii qzWnOt |}x>|ip3|t }|djoPn|ii |qWWd|ii XdS(NsThread.__init__() not calleds'cannot join thread before it is startedscannot join current threadi( R~R8R{RoR R}R4R#R|RZRNR9(RRStdeadlineRW((s!/usr/lib64/python2.6/threading.pytjoinus,        cCs|iS(N(Ru(R((s!/usr/lib64/python2.6/threading.pyR.scCst||_dS(N(RtRu(RR.((s!/usr/lib64/python2.6/threading.pyR.scCs|iS(N(Rz(R((s!/usr/lib64/python2.6/threading.pytidentscCs|iio|i S(N(R{RoR|(R((s!/usr/lib64/python2.6/threading.pytisAlivescCs|iS(N(Ry(R((s!/usr/lib64/python2.6/threading.pyRscCsG|iptdn|iiotdn||_dS(NsThread.__init__() not calleds)cannot set daemon status of active thread(R~R8R{RoRy(Rtdaemonic((s!/usr/lib64/python2.6/threading.pyRs  cCs|iS(N(R(R((s!/usr/lib64/python2.6/threading.pytisDaemonscCs ||_dS(N(R(RR((s!/usr/lib64/python2.6/threading.pyt setDaemonscCs|iS(N(R.(R((s!/usr/lib64/python2.6/threading.pytgetNamescCs ||_dS(N(R.(RR.((s!/usr/lib64/python2.6/threading.pytsetNamesN(( R!R"RKR~Rtexc_infoRt exc_clearRR#RRxR2RRRRRRt_Thread__deleteRtpropertyR.tsetterRRtis_aliveRRRRR(((s!/usr/lib64/python2.6/threading.pyRs4        K  # !    cOs t||S(N(t_Timer(RR(((s!/usr/lib64/python2.6/threading.pyRsRcBs/eZdZghdZdZdZRS(sCall a function after a specified number of seconds: t = Timer(30.0, f, args=[], kwargs={}) t.start() t.cancel() # stop the timer's action if it's still waiting cCsAti|||_||_||_||_t|_dS(N(RRtintervaltfunctionRR(R tfinished(RRRRR(((s!/usr/lib64/python2.6/threading.pyRs      cCs|iidS(s(Stop the timer if it hasn't finished yetN(RRm(R((s!/usr/lib64/python2.6/threading.pytcancelscCsN|ii|i|iip|i|i|in|iidS(N(RRZRRoRRR(Rm(R((s!/usr/lib64/python2.6/threading.pyRs(R!R"RhRRR(((s!/usr/lib64/python2.6/threading.pyRs t _MainThreadcBs#eZdZdZdZRS(cCsOti|dd|ii|iti|ttRCR-t itervaluesR3RzRLR|RRntupdate(t new_activetcurrenttthreadR((s!/usr/lib64/python2.6/threading.pyt _after_forkTs          c CsdtfdY}dtfdY}dtfdY}d}d}d }||}g}xAt|D]3}|||} d |d | _|i| qsW||||} x"|D]} | itd qW| ix|D]} | iqW| idS( Nt BoundedQueuecBs#eZdZdZdZRS(cSsVti|t|_t|i|_t|i|_||_t|_ dS(N( RRR tmonRR7twctlimitRtqueue(RR((s!/usr/lib64/python2.6/threading.pyR|s    cSs|iix;t|i|ijo!|id||iiqW|ii||id|t|i|i i |ii dS(Nsput(%s): queue fulls put(%s): appended, length now %d( RR4RIRRR RRZRMR7R_R9(Rtitem((s!/usr/lib64/python2.6/threading.pytputs   cSs|iix)|ip|id|iiqW|ii}|id|t|i|ii |ii |S(Nsget(): queue emptysget(): got %s, %d left( RR4RR R7RZtpopleftRIRR_R9(RR((s!/usr/lib64/python2.6/threading.pytgets     (R!R"RRR(((s!/usr/lib64/python2.6/threading.pyRzs  tProducerThreadcBseZdZdZRS(cSs)ti|dd||_||_dS(NR.tProducer(RRRtquota(RRR((s!/usr/lib64/python2.6/threading.pyRs cSsjddkl}d}xM||ijo<|d}|iid|i|ft|dqWdS(Ni(trandomiis%s.%dgh㈵>(RRRRR.RP(RRtcounter((s!/usr/lib64/python2.6/threading.pyRs (R!R"RR(((s!/usr/lib64/python2.6/threading.pyRs tConsumerThreadcBseZdZdZRS(cSs)ti|dd||_||_dS(NR.tConsumer(RRRR:(RRR:((s!/usr/lib64/python2.6/threading.pyRs cSs@x9|idjo(|ii}|GH|id|_qWdS(Nii(R:RR(RR((s!/usr/lib64/python2.6/threading.pyRs (R!R"RR(((s!/usr/lib64/python2.6/threading.pyRs iiis Producer-%digư>(RRtrangeR.RMRRPR( RRRtNPtQLtNItQtPtiR;tC((s!/usr/lib64/python2.6/threading.pyt_testxs.      t__main__(KRhtsysRRt ImportErrorRR!twarningst functoolsRRRNRRPt tracebackRRt collectionsRt__all__tstart_new_threadRt allocate_lockR)t get_identR3terrort ThreadErrortfilterwarningstDeprecationWarningRKt_VERBOSEtobjectRR#R$R&RRR R R'RRDRRbRRfR RiRpRrRR-RRRRRRRRR RRRR RRt _shutdownRRt_threading_localRR(((s!/usr/lib64/python2.6/threading.pyts             M u -  &  )        $ R