ó ’,bc@s>dddgZddlZddlZddlZddlZddlZddlZddlZddlm Z m Z ddl Z ddl m Z ddlmZmZmZmZdd lmZmZmZmZmZdd lmZdefd „ƒYZeƒZdefd „ƒYZdefd „ƒYZdS(tQueuet SimpleQueuet JoinableQueueiÿÿÿÿN(tEmptytFulli(tPipe(tLocktBoundedSemaphoret Semaphoret Condition(tdebugtinfotFinalizetregister_after_forkt is_exiting(tassert_spawningcBsËeZdd„Zd„Zd„Zd„Zedd„Zedd„Z d„Z d„Z d „Z d „Z d „Zd „Zd „Zd„Zd„Zed„ƒZed„ƒZed„ƒZRS(icCsÀ|dkrtjj}n||_tdtƒ\|_|_tƒ|_ t j ƒ|_ t jdkrud|_n tƒ|_t|ƒ|_|jƒt jdkr¼t|tjƒndS(Nitduplextwin32(t_multiprocessingtSemLockt SEM_VALUE_MAXt_maxsizeRtFalset_readert_writerRt_rlocktostgetpidt_opidtsystplatformtNonet_wlockRt_semt _after_forkR R(tselftmaxsize((s,/usr/lib/python2.7/multiprocessing/queues.pyt__init__:s      cCs8t|ƒ|j|j|j|j|j|j|jfS(N(RRRRRR R!R(R#((s,/usr/lib/python2.7/multiprocessing/queues.pyt __getstate__Ls cCs>|\|_|_|_|_|_|_|_|jƒdS(N(RRRRR R!RR"(R#tstate((s,/usr/lib/python2.7/multiprocessing/queues.pyt __setstate__Qs0cCstdƒtjtjƒƒ|_tjƒ|_d|_ d|_ t |_ t |_ d|_|jj|_|jj|_|jj|_dS(NsQueue._after_fork()(R t threadingR Rt _notemptyt collectionstdequet_bufferRt_threadt _jointhreadRt_joincancelledt_closedt_closeRtsendt_sendRtrecvt_recvtpollt_poll(R#((s,/usr/lib/python2.7/multiprocessing/queues.pyR"Vs      cCs|j st‚|jj||ƒs.t‚n|jjƒz=|jdkrZ|jƒn|j j |ƒ|jj ƒWd|jj ƒXdS(N( R1tAssertionErrorR!tacquireRR*R.Rt _start_threadR-tappendtnotifytrelease(R#tobjtblockttimeout((s,/usr/lib/python2.7/multiprocessing/queues.pytputcs   cCs|rT|dkrT|jjƒz!|jƒ}|jjƒ|SWd|jjƒXn¼|rmtjƒ|}n|jj||ƒs‹t‚nzt|rÌ|tjƒ}|dksÀ|j|ƒ rát‚qán|jƒsát‚n|jƒ}|jjƒ|SWd|jjƒXdS(Ni( RRR:R6R!R>ttimeRR8(R#R@RAtrestdeadline((s,/usr/lib/python2.7/multiprocessing/queues.pytgetqs,         cCs|j|jjjƒS(N(RR!t_semlockt _get_value(R#((s,/usr/lib/python2.7/multiprocessing/queues.pytqsizescCs |jƒ S(N(R8(R#((s,/usr/lib/python2.7/multiprocessing/queues.pytempty‘scCs|jjjƒS(N(R!RGt_is_zero(R#((s,/usr/lib/python2.7/multiprocessing/queues.pytfull”scCs |jtƒS(N(RFR(R#((s,/usr/lib/python2.7/multiprocessing/queues.pyt get_nowait—scCs|j|tƒS(N(RBR(R#R?((s,/usr/lib/python2.7/multiprocessing/queues.pyt put_nowaitšscCsDt|_z|jjƒWd|j}|r?d|_|ƒnXdS(N(tTrueR1RtcloseR2R(R#RP((s,/usr/lib/python2.7/multiprocessing/queues.pyRPs   cCs3tdƒ|jst‚|jr/|jƒndS(NsQueue.join_thread()(R R1R9R/(R#((s,/usr/lib/python2.7/multiprocessing/queues.pyt join_thread§s  cCs<tdƒt|_y|jjƒWntk r7nXdS(NsQueue.cancel_join_thread()(R ROR0R/tcanceltAttributeError(R#((s,/usr/lib/python2.7/multiprocessing/queues.pytcancel_join_thread­s    c Csótdƒ|jjƒtjdtjd|j|j|j|j |j j fddƒ|_ t |j _tdƒ|j jƒtdƒ|jsÅt|j tjtj|j ƒgdd ƒ|_nt|tj|j|jgdd ƒ|_dS( NsQueue._start_thread()ttargettargstnametQueueFeederThreadsdoing self._thread.start()s... done self._thread.start()t exitpriorityiûÿÿÿi (R R-tclearR)tThreadRt_feedR*R4R RRPR.ROtdaemontstartR0R t_finalize_jointweakreftrefR/t_finalize_closeR2(R#((s,/usr/lib/python2.7/multiprocessing/queues.pyR;µs(            cCsDtdƒ|ƒ}|dk r6|jƒtdƒn tdƒdS(Nsjoining queue threads... queue thread joineds... queue thread already dead(R Rtjoin(ttwrtthread((s,/usr/lib/python2.7/multiprocessing/queues.pyR_Õs      cCsAtdƒ|jƒz|jtƒ|jƒWd|jƒXdS(Nstelling queue thread to quit(R R:R<t _sentinelR=R>(tbuffertnotempty((s,/usr/lib/python2.7/multiprocessing/queues.pyRbßs    cCsrtdƒ|j}|j}|j}|j}t} tjdkrX|j} |j} nd} y³x¬|ƒz|s~|ƒnWd|ƒXynxg|ƒ} | | krºtdƒ|ƒdS| dkrÓ|| ƒq| ƒz|| ƒWd| ƒXqWWqdt k r qdXqdWWnZt k rm} y3t ƒr?t d| ƒnddl }|jƒWqnt k riqnXnXdS(Ns$starting thread to feed data to pipeRs%feeder thread got sentinel -- exitingserror in queue thread: %siÿÿÿÿ(R R:R>twaittpopleftRfRRRt IndexErrort ExceptionRR t tracebackt print_exc(RgRhR3t writelockRPtnacquiretnreleasetnwaittbpoplefttsentineltwacquiretwreleaseR?teRm((s,/usr/lib/python2.7/multiprocessing/queues.pyR\ésP                 N(t__name__t __module__R%R&R(R"RORRBRFRIRJRLRMRNRPRQRTR;t staticmethodR_RbR\(((s,/usr/lib/python2.7/multiprocessing/queues.pyR8s$              cBsGeZdd„Zd„Zd„Zedd„Zd„Zd„Z RS(icCs/tj||ƒtdƒ|_tƒ|_dS(Ni(RR%Rt_unfinished_tasksR t_cond(R#R$((s,/usr/lib/python2.7/multiprocessing/queues.pyR%+scCstj|ƒ|j|jfS(N(RR&R|R{(R#((s,/usr/lib/python2.7/multiprocessing/queues.pyR&0scCs.tj||d ƒ|d\|_|_dS(Niþÿÿÿ(RR(R|R{(R#R'((s,/usr/lib/python2.7/multiprocessing/queues.pyR(3scCs´|j st‚|jj||ƒs.t‚n|jjƒ|jjƒzJ|jdkrg|j ƒn|j j |ƒ|j j ƒ|jjƒWd|jj ƒ|jj ƒXdS(N(R1R9R!R:RR*R|R.RR;R-R<R{R>R=(R#R?R@RA((s,/usr/lib/python2.7/multiprocessing/queues.pyRB7s      cCsi|jjƒzG|jjtƒs1tdƒ‚n|jjjƒrS|jjƒnWd|jjƒXdS(Ns!task_done() called too many times( R|R:R{Rt ValueErrorRGRKt notify_allR>(R#((s,/usr/lib/python2.7/multiprocessing/queues.pyt task_doneHs cCsH|jjƒz&|jjjƒs2|jjƒnWd|jjƒXdS(N(R|R:R{RGRKRiR>(R#((s,/usr/lib/python2.7/multiprocessing/queues.pyRcRs  N( RxRyR%R&R(RORRBRRc(((s,/usr/lib/python2.7/multiprocessing/queues.pyR)s     cBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCs\tdtƒ\|_|_tƒ|_tjdkrBd|_ n tƒ|_ |j ƒdS(NRR( RRRRRRRRRR t _make_methods(R#((s,/usr/lib/python2.7/multiprocessing/queues.pyR%`s    cCs|jjƒ S(N(RR7(R#((s,/usr/lib/python2.7/multiprocessing/queues.pyRJiscCs&t|ƒ|j|j|j|jfS(N(RRRRR (R#((s,/usr/lib/python2.7/multiprocessing/queues.pyR&ls cCs,|\|_|_|_|_|jƒdS(N(RRRR R€(R#R'((s,/usr/lib/python2.7/multiprocessing/queues.pyR(pscs«|jj‰|jj|jj‰‰‡‡‡fd†}||_|jdkrd|jj |_ nC|jj ‰|jj|jj‰‰‡‡‡fd†}||_ dS(Ncs!ˆƒz ˆƒSWdˆƒXdS(N(((tracquireR5trrelease(s,/usr/lib/python2.7/multiprocessing/queues.pyRFws cs$ˆƒzˆ|ƒSWdˆƒXdS(N((R?(R3RuRv(s,/usr/lib/python2.7/multiprocessing/queues.pyRB…s( RR5RR:R>RFR RRR3RB(R#RFRB((RR5R‚R3RuRvs,/usr/lib/python2.7/multiprocessing/queues.pyR€ts   (RxRyR%RJR&R(R€(((s,/usr/lib/python2.7/multiprocessing/queues.pyR^s    (t__all__RRR)R+RCtatexitR`RRRRtRt synchronizeRRRR tutilR R R R RtforkingRtobjectRfRR(((s,/usr/lib/python2.7/multiprocessing/queues.pyt#s"        "(ç 5