rfc@s8dddgZddlZddlZddlZddlZddlZddlZddlZddlm Z m Z ddl Z ddl m Z ddlmZmZmZmZddlmZmZmZmZdd lmZdefd YZeZdefd YZdefd YZdS( tQueuet SimpleQueuet JoinableQueueiN(tEmptytFull(tPipe(tLocktBoundedSemaphoret Semaphoret Condition(tdebugtinfotFinalizetregister_after_fork(tassert_spawningcBseZddZdZdZdZeddZeddZ dZ dZ d Z d Z d Zd Zd ZdZdZedZedZedZRS(icCs|dkrtjj}n||_tdt\|_|_t|_ t j |_ t jdkrud|_n t|_t||_|jt jdkrt|tjndS(Nitduplextwin32(t_multiprocessingtSemLockt SEM_VALUE_MAXt_maxsizeRtFalset_readert_writerRt_rlocktostgetpidt_opidtsystplatformtNonet_wlockRt_semt _after_forkR R(tselftmaxsize((s./usr/lib64/python2.7/multiprocessing/queues.pyt__init__:s      cCs8t||j|j|j|j|j|j|jfS(N(RRRRRRR R(R"((s./usr/lib64/python2.7/multiprocessing/queues.pyt __getstate__Ls cCs>|\|_|_|_|_|_|_|_|jdS(N(RRRRRR RR!(R"tstate((s./usr/lib64/python2.7/multiprocessing/queues.pyt __setstate__Qs0cCstdtjtj|_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/lib64/python2.7/multiprocessing/queues.pyR!Vs      cCs|j st|jj||s.tn|jjz=|jdkrZ|jn|j j ||jj Wd|jj XdS(N( R0tAssertionErrorR tacquireRR)R-Rt _start_threadR,tappendtnotifytrelease(R"tobjtblockttimeout((s./usr/lib64/python2.7/multiprocessing/queues.pytputcs   cCs|rT|dkrT|jjz!|j}|jj|SWd|jjXn|rmtj|}n|jj||stnzt|r|tj}|dks|j| rtqn|jstn|j}|jj|SWd|jjXdS(Ni( RRR9R5R R=ttimeRR7(R"R?R@trestdeadline((s./usr/lib64/python2.7/multiprocessing/queues.pytgetqs,         cCs|j|jjjS(N(RR t_semlockt _get_value(R"((s./usr/lib64/python2.7/multiprocessing/queues.pytqsizescCs |j S(N(R7(R"((s./usr/lib64/python2.7/multiprocessing/queues.pytemptyscCs|jjjS(N(R RFt_is_zero(R"((s./usr/lib64/python2.7/multiprocessing/queues.pytfullscCs |jtS(N(RER(R"((s./usr/lib64/python2.7/multiprocessing/queues.pyt get_nowaitscCs|j|tS(N(RAR(R"R>((s./usr/lib64/python2.7/multiprocessing/queues.pyt put_nowaitscCs0t|_|jj|jr,|jndS(N(tTrueR0RtcloseR1(R"((s./usr/lib64/python2.7/multiprocessing/queues.pyROs   cCs3td|jst|jr/|jndS(NsQueue.join_thread()(R R0R8R.(R"((s./usr/lib64/python2.7/multiprocessing/queues.pyt join_threads  cCs<tdt|_y|jjWntk r7nXdS(NsQueue.cancel_join_thread()(R RNR/R.tcanceltAttributeError(R"((s./usr/lib64/python2.7/multiprocessing/queues.pytcancel_join_threads    c Cstd|jjtjdtjd|j|j|j|j |j j fdd|_ t |j _td|j jtd|jst|j tjtj|j gdd |_nt|tj|j|jgdd |_dS( NsQueue._start_thread()ttargettargstnametQueueFeederThreadsdoing self._thread.start()s... done self._thread.start()t exitpriorityii (R R,tclearR(tThreadRt_feedR)R3RRROR-RNtdaemontstartR/R t_finalize_jointweakreftrefR.t_finalize_closeR1(R"((s./usr/lib64/python2.7/multiprocessing/queues.pyR:s(            cCsDtd|}|dk r6|jtdn tddS(Nsjoining queue threads... queue thread joineds... queue thread already dead(R Rtjoin(ttwrtthread((s./usr/lib64/python2.7/multiprocessing/queues.pyR^s      cCsAtd|jz|jt|jWd|jXdS(Nstelling queue thread to quit(R R9R;t _sentinelR<R=(tbuffertnotempty((s./usr/lib64/python2.7/multiprocessing/queues.pyRas    cCstdddlm}|j}|j}|j}|j} t} tj dkrh|j} |j} nd} yx|z|s|nWd|Xymxf| } | | krtd|dS| dkr|| q| z|| Wd| XqWqtt k rqtXqtWnZt k r{}y3|rMt d|nddl}|jWq|t k rwq|XnXdS(Ns$starting thread to feed data to pipei(t is_exitingRs%feeder thread got sentinel -- exitingserror in queue thread: %si(R tutilRhR9R=twaittpopleftReRRRt IndexErrort ExceptionR t tracebackt print_exc(RfRgR2t writelockRORhtnacquiretnreleasetnwaittbpoplefttsentineltwacquiretwreleaseR>teRn((s./usr/lib64/python2.7/multiprocessing/queues.pyR[sR                 N(t__name__t __module__R$R%R'R!RNRRARERHRIRKRLRMRORPRSR:t staticmethodR^RaR[(((s./usr/lib64/python2.7/multiprocessing/queues.pyR8s$               cBsGeZddZdZdZeddZdZdZ RS(icCs/tj||td|_t|_dS(Ni(RR$Rt_unfinished_tasksR t_cond(R"R#((s./usr/lib64/python2.7/multiprocessing/queues.pyR$)scCstj||j|jfS(N(RR%R}R|(R"((s./usr/lib64/python2.7/multiprocessing/queues.pyR%.scCs.tj||d |d\|_|_dS(Ni(RR'R}R|(R"R&((s./usr/lib64/python2.7/multiprocessing/queues.pyR'1scCs|j st|jj||s.tn|jj|jjzJ|jdkrg|j n|j j ||j j |jjWd|jj |jj XdS(N(R0R8R R9RR)R}R-RR:R,R;R|R=R<(R"R>R?R@((s./usr/lib64/python2.7/multiprocessing/queues.pyRA5s      cCsi|jjzG|jjts1tdn|jjjrS|jjnWd|jjXdS(Ns!task_done() called too many times( R}R9R|Rt ValueErrorRFRJt notify_allR=(R"((s./usr/lib64/python2.7/multiprocessing/queues.pyt task_doneFs cCsH|jjz&|jjjs2|jjnWd|jjXdS(N(R}R9R|RFRJRjR=(R"((s./usr/lib64/python2.7/multiprocessing/queues.pyRbPs  N( RyRzR$R%R'RNRRARRb(((s./usr/lib64/python2.7/multiprocessing/queues.pyR's     cBs5eZdZdZdZdZdZRS(cCs\tdt\|_|_t|_tjdkrBd|_ n t|_ |j dS(NRR( RRRRRRRRRRt _make_methods(R"((s./usr/lib64/python2.7/multiprocessing/queues.pyR$^s    cCs|jj S(N(RR6(R"((s./usr/lib64/python2.7/multiprocessing/queues.pyRIgscCs&t||j|j|j|jfS(N(RRRRR(R"((s./usr/lib64/python2.7/multiprocessing/queues.pyR%js cCs,|\|_|_|_|_|jdS(N(RRRRR(R"R&((s./usr/lib64/python2.7/multiprocessing/queues.pyR'nscs|jj|jj|jjfd}||_|jdkrd|jj |_ nC|jj |jj|jjfd}||_ dS(Ncs!z SWdXdS(N(((tracquireR4trrelease(s./usr/lib64/python2.7/multiprocessing/queues.pyREus cs$z|SWdXdS(N((R>(R2RvRw(s./usr/lib64/python2.7/multiprocessing/queues.pyRAs( RR4RR9R=RERRRR2RA(R"RERA((RR4RR2RvRws./usr/lib64/python2.7/multiprocessing/queues.pyRrs   (RyRzR$RIR%R'R(((s./usr/lib64/python2.7/multiprocessing/queues.pyR\s    (t__all__RRR(R*RBtatexitR_RRRRtmultiprocessingRtmultiprocessing.synchronizeRRRR tmultiprocessing.utilR R R R tmultiprocessing.forkingRtobjectReRR(((s./usr/lib64/python2.7/multiprocessing/queues.pyt#s"        "" 5