
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \L"  ã               @   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   ú/usr/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r¤t‚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r”t‚| 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ƒ sˆt‚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