ó
w®¸Qc           @   s8  d  d d g Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l m	 Z	 m
 Z
 d d l Z d d l m Z d d l m Z m Z m Z m Z d d l m Z m Z m Z m Z d d	 l m Z d  e f d
 „  ƒ  YZ e ƒ  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   t   Queuet   SimpleQueuet   JoinableQueueiÿÿÿÿN(   t   Emptyt   Full(   t   Pipe(   t   Lockt   BoundedSemaphoret	   Semaphoret	   Condition(   t   debugt   infot   Finalizet   register_after_fork(   t   assert_spawningc           B   sË   e  Z d  d „ Z d „  Z d „  Z d „  Z e d d „ Z e d d „ Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z RS(   i    c         C   sÀ   | d k r t  j j } n  | |  _ t d t ƒ \ |  _ |  _ t ƒ  |  _	 t
 j ƒ  |  _ t j d k ru d  |  _ n t ƒ  |  _ t | ƒ |  _ |  j ƒ  t j d k r¼ t |  t j ƒ n  d  S(   Ni    t   duplext   win32(   t   _multiprocessingt   SemLockt   SEM_VALUE_MAXt   _maxsizeR   t   Falset   _readert   _writerR   t   _rlockt   ost   getpidt   _opidt   syst   platformt   Nonet   _wlockR   t   _semt   _after_forkR   R    (   t   selft   maxsize(    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyt   __init__:   s    	
c         C   s8   t  |  ƒ |  j |  j |  j |  j |  j |  j |  j f S(   N(   R   R   R   R   R   R   R    R   (   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyt   __getstate__L   s    
c         C   s>   | \ |  _  |  _ |  _ |  _ |  _ |  _ |  _ |  j ƒ  d  S(   N(   R   R   R   R   R   R    R   R!   (   R"   t   state(    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyt   __setstate__Q   s    0c         C   s   t  d ƒ t j t j ƒ  ƒ |  _ t j ƒ  |  _ d  |  _	 d  |  _
 t |  _ t |  _ d  |  _ |  j j |  _ |  j j |  _ |  j j |  _ d  S(   Ns   Queue._after_fork()(   R
   t	   threadingR	   R   t	   _notemptyt   collectionst   dequet   _bufferR   t   _threadt   _jointhreadR   t   _joincancelledt   _closedt   _closeR   t   sendt   _sendR   t   recvt   _recvt   pollt   _poll(   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR!   V   s    
					c         C   s}   |  j  j | | ƒ s t ‚ n  |  j j ƒ  z= |  j d  k rJ |  j ƒ  n  |  j j | ƒ |  j j	 ƒ  Wd  |  j j
 ƒ  Xd  S(   N(   R    t   acquireR   R)   R-   R   t   _start_threadR,   t   appendt   notifyt   release(   R"   t   objt   blockt   timeout(    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyt   putc   s    	c         C   s  | rT | d  k rT |  j j ƒ  z! |  j ƒ  } |  j j ƒ  | SWd  |  j j ƒ  Xn¼ | rm t j ƒ  | } n  |  j j | | ƒ s‹ t ‚ n  zt | rÌ | t j ƒ  } | d k  sÀ |  j | ƒ rá t ‚ qá n |  j ƒ  sá t ‚ n  |  j ƒ  } |  j j ƒ  | SWd  |  j j ƒ  Xd  S(   Ni    (	   R   R   R8   R5   R    R<   t   timeR   R7   (   R"   R>   R?   t   rest   deadline(    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyt   getq   s,    		c         C   s   |  j  |  j j j ƒ  S(   N(   R   R    t   _semlockt
   _get_value(   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyt   qsize   s    c         C   s   |  j  ƒ  S(   N(   R7   (   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyt   empty‘   s    c         C   s   |  j  j j ƒ  S(   N(   R    RE   t   _is_zero(   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyt   full”   s    c         C   s   |  j  t ƒ S(   N(   RD   R   (   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyt
   get_nowait—   s    c         C   s   |  j  | t ƒ S(   N(   R@   R   (   R"   R=   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyt
   put_nowaitš   s    c         C   s0   t  |  _ |  j j ƒ  |  j r, |  j ƒ  n  d  S(   N(   t   TrueR0   R   t   closeR1   (   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyRN      s    		c         C   s$   t  d ƒ |  j r  |  j ƒ  n  d  S(   Ns   Queue.join_thread()(   R
   R.   (   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyt   join_thread£   s    
	c         C   s<   t  d ƒ t |  _ y |  j j ƒ  Wn t k
 r7 n Xd  S(   Ns   Queue.cancel_join_thread()(   R
   RM   R/   R.   t   cancelt   AttributeError(   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyt   cancel_join_thread©   s    
	c      	   C   só   t  d ƒ |  j j ƒ  t j d t j d |  j |  j |  j |  j	 |  j
 j f d d ƒ |  _ t |  j _ t  d ƒ |  j j ƒ  t  d ƒ |  j sÅ t |  j t j t j |  j ƒ g d d	 ƒ|  _ n  t |  t j |  j |  j g d d
 ƒ|  _ d  S(   Ns   Queue._start_thread()t   targett   argst   namet   QueueFeederThreads   doing self._thread.start()s   ... done self._thread.start()t   exitpriorityiûÿÿÿi
   (   R
   R,   t   clearR(   t   ThreadR    t   _feedR)   R3   R   R   RN   R-   RM   t   daemont   startR/   R   t   _finalize_joint   weakreft   refR.   t   _finalize_closeR1   (   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR9   ±   s(    
		

		c         C   sD   t  d ƒ |  ƒ  } | d  k	 r6 | j ƒ  t  d ƒ n
 t  d ƒ d  S(   Ns   joining queue threads   ... queue thread joineds   ... queue thread already dead(   R
   R   t   join(   t   twrt   thread(    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR]   Ñ   s    
	
c         C   sA   t  d ƒ | j ƒ  z |  j t ƒ | j ƒ  Wd  | j ƒ  Xd  S(   Ns   telling queue thread to quit(   R
   R8   R:   t	   _sentinelR;   R<   (   t   buffert   notempty(    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR`   Û   s    

c         C   s€  t  d ƒ d d l m } | j } | j } | j } |  j }	 t }
 t j	 d k rh | j } | j } n d  } y± xª | ƒ  z |  sŽ | ƒ  n  Wd  | ƒ  Xym xf |	 ƒ  } | |
 k rÊ t  d ƒ | ƒ  d  S| d  k rã | | ƒ q  | ƒ  z | | ƒ Wd  | ƒ  Xq  Wqt t k
 rqt Xqt WnZ t k
 r{} y3 | ƒ  rMt d | ƒ n d d  l } | j ƒ  Wq|t k
 rwq|Xn Xd  S(   Ns$   starting thread to feed data to pipei   (   t
   is_exitingR   s%   feeder thread got sentinel -- exitings   error in queue thread: %siÿÿÿÿ(   R
   t   utilRg   R8   R<   t   waitt   popleftRd   R   R   R   t
   IndexErrort	   ExceptionR   t	   tracebackt	   print_exc(   Re   Rf   R2   t	   writelockRN   Rg   t   nacquiret   nreleaset   nwaitt   bpopleftt   sentinelt   wacquiret   wreleaseR=   t   eRm   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyRZ   å   sR    
						
	N(   t   __name__t
   __module__R$   R%   R'   R!   RM   R   R@   RD   RG   RH   RJ   RK   RL   RN   RO   RR   R9   t   staticmethodR]   R`   RZ   (    (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR    8   s$   												 

c           B   sG   e  Z d  d „ Z d „  Z d „  Z e d d „ Z d „  Z d „  Z	 RS(   i    c         C   s/   t  j |  | ƒ t d ƒ |  _ t ƒ  |  _ d  S(   Ni    (   R    R$   R   t   _unfinished_tasksR	   t   _cond(   R"   R#   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR$   )  s    c         C   s   t  j |  ƒ |  j |  j f S(   N(   R    R%   R|   R{   (   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR%   .  s    c         C   s.   t  j |  | d  ƒ | d \ |  _ |  _ d  S(   Niþÿÿÿ(   R    R'   R|   R{   (   R"   R&   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR'   1  s    c         C   s¤   |  j  j | | ƒ s t ‚ n  |  j j ƒ  |  j j ƒ  zJ |  j d  k rW |  j ƒ  n  |  j j	 | ƒ |  j
 j ƒ  |  j j ƒ  Wd  |  j j ƒ  |  j j ƒ  Xd  S(   N(   R    R8   R   R)   R|   R-   R   R9   R,   R:   R{   R<   R;   (   R"   R=   R>   R?   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR@   5  s    	c         C   si   |  j  j ƒ  zG |  j j t ƒ s1 t d ƒ ‚ n  |  j j j ƒ  rS |  j  j ƒ  n  Wd  |  j  j ƒ  Xd  S(   Ns!   task_done() called too many times(	   R|   R8   R{   R   t
   ValueErrorRE   RI   t
   notify_allR<   (   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyt	   task_doneF  s    c         C   sH   |  j  j ƒ  z& |  j j j ƒ  s2 |  j  j ƒ  n  Wd  |  j  j ƒ  Xd  S(   N(   R|   R8   R{   RE   RI   Ri   R<   (   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyRa   P  s
    N(
   Rx   Ry   R$   R%   R'   RM   R   R@   R   Ra   (    (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR   '  s   			
c           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s\   t  d t ƒ \ |  _ |  _ t ƒ  |  _ t j d k rB d  |  _	 n t ƒ  |  _	 |  j
 ƒ  d  S(   NR   R   (   R   R   R   R   R   R   R   R   R   R   t   _make_methods(   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR$   ^  s    c         C   s   |  j  j ƒ  S(   N(   R   R6   (   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyRH   g  s    c         C   s&   t  |  ƒ |  j |  j |  j |  j f S(   N(   R   R   R   R   R   (   R"   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR%   j  s    
c         C   s,   | \ |  _  |  _ |  _ |  _ |  j ƒ  d  S(   N(   R   R   R   R   R€   (   R"   R&   (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR'   n  s    c            s«   |  j  j ‰ |  j j |  j j ‰  ‰ ‡  ‡ ‡ f d †  } | |  _ |  j d  k rd |  j j	 |  _
 nC |  j j	 ‰ |  j j |  j j ‰ ‰ ‡ ‡ ‡ f d †  } | |  _
 d  S(   Nc              s!   ˆ  ƒ  z ˆ ƒ  SWd  ˆ ƒ  Xd  S(   N(    (    (   t   racquireR4   t   rrelease(    s,   /sys/lib/python2.7/multiprocessing/queues.pyRD   u  s    c            s$   ˆ ƒ  z ˆ  |  ƒ SWd  ˆ ƒ  Xd  S(   N(    (   R=   (   R2   Ru   Rv   (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR@   ƒ  s    (   R   R4   R   R8   R<   RD   R   R   R   R2   R@   (   R"   RD   R@   (    (   R   R4   R‚   R2   Ru   Rv   s,   /sys/lib/python2.7/multiprocessing/queues.pyR€   r  s    	(   Rx   Ry   R$   RH   R%   R'   R€   (    (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyR   \  s
   					(   t   __all__R   R   R(   R*   RA   t   atexitR^   R    R   R   R   t   multiprocessingR   t   multiprocessing.synchronizeR   R   R   R	   t   multiprocessing.utilR
   R   R   R   t   multiprocessing.forkingR   t   objectRd   R   R   (    (    (    s,   /sys/lib/python2.7/multiprocessing/queues.pyt   <module>#   s"   ""å	
5