???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3
2aL"                 @   s   yd dl Z W n ek
r(   d dlZ Y nX d dlmZ d dlmZmZ d dlm	Z ddddd	gZ
G d
d deZG dd deZG dd dZG dd deZG dd	 d	eZdS )    N)deque)heappushheappop)	monotonicEmptyFullQueuePriorityQueue	LifoQueuec               @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   */opt/alt/python36/lib64/python3.6/queue.pyr      s   c               @   s   e Zd ZdS )r   N)r   r   r   r   r   r   r   r      s   c               @   s   e Zd Zd ddZdd Zdd Zdd	 Zd
d Zdd Zd!ddZ	d"ddZ
dd Zdd Zdd Zdd Zdd Zdd ZdS )#r   r   c             C   sN   || _ | j| tj | _tj| j| _tj| j| _tj| j| _d| _	d S )Nr   )
maxsize_init	threadingZLockmutexZ	Condition	not_emptynot_fullall_tasks_doneunfinished_tasks)selfr   r   r   r   __init__   s    

zQueue.__init__c          	   C   sH   | j 8 | jd }|dkr4|dk r*td| j j  || _W d Q R X d S )N   r   z!task_done() called too many times)r   r   
ValueErrorZ
notify_all)r   Z
unfinishedr   r   r   	task_done2   s    

zQueue.task_donec          	   C   s,   | j  x| jr| j j  q
W W d Q R X d S )N)r   r   wait)r   r   r   r   joinH   s    	z
Queue.joinc          	   C   s   | j 
 | j S Q R X d S )N)r   _qsize)r   r   r   r   qsizeU   s    zQueue.qsizec          	   C   s   | j  | j  S Q R X d S )N)r   r   )r   r   r   r   emptyZ   s    zQueue.emptyc          
   C   s0   | j   d| j  k o | j kS   S Q R X d S )Nr   )r   r   r   )r   r   r   r   fullh   s    z
Queue.fullTNc          
   C   s   | j  | jdkr|s*| j | jkrtnz|d krRxp| j | jkrN| j j  q4W nR|dk rdtdn@t | }x4| j | jkr|t  }|dkrt| j j| qpW | j| |  jd7  _| j	j
  W d Q R X d S )Nr   z''timeout' must be a non-negative numberg        r   )r   r   r   r   r   r   time_putr   r   notify)r   itemblocktimeoutendtime	remainingr   r   r   puts   s&    




z	Queue.putc          	   C   s   | j  |s| j stnn|d kr<xd| j s8| j j  q$W nL|dk rNtdn:t | }x.| j s|t  }|dkrxt| j j| qZW | j }| jj  |S Q R X d S )Nr   z''timeout' must be a non-negative numberg        )	r   r   r   r   r   r#   _getr   r%   )r   r'   r(   r)   r*   r&   r   r   r   get   s$    





z	Queue.getc             C   s   | j |ddS )NF)r'   )r+   )r   r&   r   r   r   
put_nowait   s    zQueue.put_nowaitc             C   s   | j ddS )NF)r'   )r-   )r   r   r   r   
get_nowait   s    zQueue.get_nowaitc             C   s   t  | _d S )N)r   queue)r   r   r   r   r   r      s    zQueue._initc             C   s
   t | jS )N)lenr0   )r   r   r   r   r      s    zQueue._qsizec             C   s   | j j| d S )N)r0   append)r   r&   r   r   r   r$      s    z
Queue._putc             C   s
   | j j S )N)r0   popleft)r   r   r   r   r,      s    z
Queue._get)r   )TN)TN)r   r   r   r   r   r   r    r!   r"   r+   r-   r.   r/   r   r   r$   r,   r   r   r   r   r      s   

 
c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r	   c             C   s
   g | _ d S )N)r0   )r   r   r   r   r   r      s    zPriorityQueue._initc             C   s
   t | jS )N)r1   r0   )r   r   r   r   r      s    zPriorityQueue._qsizec             C   s   t | j| d S )N)r   r0   )r   r&   r   r   r   r$      s    zPriorityQueue._putc             C   s
   t | jS )N)r   r0   )r   r   r   r   r,      s    zPriorityQueue._getN)r   r   r   r   r   r$   r,   r   r   r   r   r	      s   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r
   c             C   s
   g | _ d S )N)r0   )r   r   r   r   r   r      s    zLifoQueue._initc             C   s
   t | jS )N)r1   r0   )r   r   r   r   r      s    zLifoQueue._qsizec             C   s   | j j| d S )N)r0   r2   )r   r&   r   r   r   r$      s    zLifoQueue._putc             C   s
   | j j S )N)r0   pop)r   r   r   r   r,      s    zLifoQueue._getN)r   r   r   r   r   r$   r,   r   r   r   r   r
      s   )r   ImportErrorZdummy_threadingcollectionsr   heapqr   r   r#   r   __all__	Exceptionr   r   r   r	   r
   r   r   r   r   <module>   s    B