�`^c@s8dddgZddlZddlZddlZddlZddlZddlZddlZddlm Z m
Z
ddlZddlm
Z
ddlmZmZmZmZddlmZmZmZmZdd lmZdefd
��YZe�Zdefd��YZdefd��YZdS(
tQueuetSimpleQueuet
JoinableQueuei�N(tEmptytFull(tPipe(tLocktBoundedSemaphoret Semaphoret Condition(tdebugtinfotFinalizetregister_after_fork(tassert_spawningcBs�eZdd�Zd�Zd�Zd�Zedd�Zedd�Z d�Z
d�Zd �Zd
�Z
d�Zd�Zd
�Zd�Zd�Zed��Zed��Zed��ZRS(icCs�|dkrtjj}n||_tdt�\|_|_t�|_ t
j�|_t
jdkrud|_nt�|_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,/sys/lib/python2.7/multiprocessing/queues.pyt__init__:s
cCs8t|�|j|j|j|j|j|j|jfS(N(RRRRRRR R(R"((s,/sys/lib/python2.7/multiprocessing/queues.pyt__getstate__Ls
cCs>|\|_|_|_|_|_|_|_|j�dS(N(RRRRRR RR!(R"tstate((s,/sys/lib/python2.7/multiprocessing/queues.pyt__setstate__Qs0cCs�td�tjtj��|_tj�|_d|_ d|_
t|_t|_
d|_|jj|_|jj|_|jj|_dS(NsQueue._after_fork()(R
t threadingR Rt _notemptytcollectionstdequet_bufferRt_threadt_jointhreadRt_joincancelledt_closedt_closeRtsendt_sendRtrecvt_recvtpollt_poll(R"((s,/sys/lib/python2.7/multiprocessing/queues.pyR!Vs
cCs}|jj||�st�n|jj�z=|jdkrJ|j�n|jj|�|jj �Wd|jj
�XdS(N(R tacquireRR)R-Rt
_start_threadR,tappendtnotifytrelease(R"tobjtblockttimeout((s,/sys/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��q�|j�s��n|j�}|jj�|SWd|jj�XdS(Ni( RRR8R5R R<ttimeRR7(R"R>R?trestdeadline((s,/sys/lib/python2.7/multiprocessing/queues.pytgetqs,
cCs|j|jjj�S(N(RR t_semlockt
_get_value(R"((s,/sys/lib/python2.7/multiprocessing/queues.pytqsize�scCs|j�S(N(R7(R"((s,/sys/lib/python2.7/multiprocessing/queues.pytempty�scCs|jjj�S(N(R REt_is_zero(R"((s,/sys/lib/python2.7/multiprocessing/queues.pytfull�scCs
|jt�S(N(RDR(R"((s,/sys/lib/python2.7/multiprocessing/queues.pyt
get_nowait�scCs|j|t�S(N(R@R(R"R=((s,/sys/lib/python2.7/multiprocessing/queues.pyt
put_nowait�scCs0t|_|jj�|jr,|j�ndS(N(tTrueR0RtcloseR1(R"((s,/sys/lib/python2.7/multiprocessing/queues.pyRN�s
cCs$td�|jr |j�ndS(NsQueue.join_thread()(R
R.(R"((s,/sys/lib/python2.7/multiprocessing/queues.pytjoin_thread�s
cCs<td�t|_y|jj�Wntk
r7nXdS(NsQueue.cancel_join_thread()(R
RMR/R.tcanceltAttributeError(R"((s,/sys/lib/python2.7/multiprocessing/queues.pytcancel_join_thread�s
c Cs�td�|jj�tjdtjd|j|j|j|j |j
jfdd�|_t
|j_td�|jj�td�|js�t|jtjtj|j�gdd �|_nt|tj|j|jgdd
�|_dS(NsQueue._start_thread()ttargettargstnametQueueFeederThreadsdoing self._thread.start()s... done self._thread.start()texitpriorityi�i
(R
R,tclearR(tThreadRt_feedR)R3RRRNR-RMtdaemontstartR/Rt_finalize_jointweakreftrefR.t_finalize_closeR1(R"((s,/sys/lib/python2.7/multiprocessing/queues.pyR9�s(
cCsDtd�|�}|dk r6|j�td�n
td�dS(Nsjoining queue threads... queue thread joineds... queue thread already dead(R
Rtjoin(ttwrtthread((s,/sys/lib/python2.7/multiprocessing/queues.pyR]�s
cCsAtd�|j�z|jt�|j�Wd|j�XdS(Nstelling queue thread to quit(R
R8R:t _sentinelR;R<(tbuffertnotempty((s,/sys/lib/python2.7/multiprocessing/queues.pyR`�s
cCs�td�ddlm}|j}|j}|j}|j} t}
tj dkrh|j}|j}nd}y�x�|�z|s�|�nWd|�Xymxf| �}
|
|
kr�td�|�dS|dkr�|
�q�|�z||
�Wd|�Xq�Wqttk
rqtXqtWnZtk
r{}y3|�rMt
d|�nddl}|j�Wq|tk
rwq|XnXdS(Ns$starting thread to feed data to pipei(t
is_exitingRs%feeder thread got sentinel -- exitingserror in queue thread: %si�(R
tutilRgR8R<twaittpopleftRdRRRt
IndexErrort ExceptionRt tracebackt print_exc(ReRfR2t writelockRNRgtnacquiretnreleasetnwaittbpoplefttsentineltwacquiretwreleaseR=teRm((s,/sys/lib/python2.7/multiprocessing/queues.pyRZ�sR
N(t__name__t
__module__R$R%R'R!RMRR@RDRGRHRJRKRLRNRORRR9tstaticmethodR]R`RZ(((s,/sys/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,/sys/lib/python2.7/multiprocessing/queues.pyR$)scCstj|�|j|jfS(N(RR%R|R{(R"((s,/sys/lib/python2.7/multiprocessing/queues.pyR%.scCs.tj||d �|d\|_|_dS(Ni�(RR'R|R{(R"R&((s,/sys/lib/python2.7/multiprocessing/queues.pyR'1scCs�|jj||�st�n|jj�|jj�zJ|jdkrW|j�n|jj |�|j
j�|jj�Wd|jj�|jj�XdS(N(
R R8RR)R|R-RR9R,R:R{R<R;(R"R=R>R?((s,/sys/lib/python2.7/multiprocessing/queues.pyR@5s
cCsi|jj�zG|jjt�s1td��n|jjj�rS|jj�nWd|jj�XdS(Ns!task_done() called too many times( R|R8R{Rt
ValueErrorRERIt
notify_allR<(R"((s,/sys/lib/python2.7/multiprocessing/queues.pyt task_doneFs
cCsH|jj�z&|jjj�s2|jj�nWd|jj�XdS(N(R|R8R{RERIRiR<(R"((s,/sys/lib/python2.7/multiprocessing/queues.pyRaPs
N(
RxRyR$R%R'RMRR@RRa(((s,/sys/lib/python2.7/multiprocessing/queues.pyR's
cBs5eZd�Zd�Zd�Zd�Zd�ZRS(cCs\tdt�\|_|_t�|_tjdkrBd|_ nt�|_ |j
�dS(NRR(RRRRRRRRRRt
_make_methods(R"((s,/sys/lib/python2.7/multiprocessing/queues.pyR$^scCs|jj�S(N(RR6(R"((s,/sys/lib/python2.7/multiprocessing/queues.pyRHgscCs&t|�|j|j|j|jfS(N(RRRRR(R"((s,/sys/lib/python2.7/multiprocessing/queues.pyR%js
cCs,|\|_|_|_|_|j�dS(N(RRRRR�(R"R&((s,/sys/lib/python2.7/multiprocessing/queues.pyR'nscs�|jj�|jj|jj�����fd�}||_|jdkrd|jj |_
nC|jj �|jj|jj�����fd�}||_
dS(Ncs!��z��SWd��XdS(N(((tracquireR4trrelease(s,/sys/lib/python2.7/multiprocessing/queues.pyRDuscs$��z�|�SWd��XdS(N((R=(R2RuRv(s,/sys/lib/python2.7/multiprocessing/queues.pyR@�s(RR4RR8R<RDRRRR2R@(R"RDR@((R�R4R�R2RuRvs,/sys/lib/python2.7/multiprocessing/queues.pyR�rs (RxRyR$RHR%R'R�(((s,/sys/lib/python2.7/multiprocessing/queues.pyR\s
(t__all__RRR(R*RAtatexitR^RRRRtmultiprocessingRtmultiprocessing.synchronizeRRRR tmultiprocessing.utilR
RRR
tmultiprocessing.forkingRtobjectRdRR(((s,/sys/lib/python2.7/multiprocessing/queues.pyt<module>#s"""�5
|