o
    oi                     @   sN   d dl Zd dlmZ ddlmZ G dd dZdeded	ed
ejfddZ	dS )    N)tqdm   )DatasetProcessorc                   @   s4   e Zd ZdZdedededejfddZdd	 Z	d
S )ReaderWorkerz1Handles reading from dataset and pushing to queue	reader_idtotal_readersdataset_processorqc                 C   s   || _ || _|| _|| _d S )N)r   r   r   r	   )selfr   r   r   r	    r   H/home/ubuntu/kanitts-2-dataset-pipeline/utils/nanocodec/reader_worker.py__init__	   s   
zReaderWorker.__init__c                 C   s^  t t  | j }t d| j | jdddddd}d}z}z4t|D ]-\}}| j|}| j	
| |d7 }|d |d	 dkrQ|d| j d
|dd q$W n tyq } z|d| j d|  W Y d}~nd}~ww W |d| j d|dd |  dS W |d| j d|dd |  dS |d| j d|dd |  w )z8Single reader worker that processes a portion of datasetu   📖 Reader-Titemsz.{desc}: {n_fmt} items | {rate_fmt} | {elapsed}g      ?)descpositionleaveunit
bar_formatdynamic_ncolsminintervalr   r   i  z (,z processed)z ERROR: Nz DONE (z items))r   set_lockmpRLockr   get_datasetr   	enumerateprepare_itemr	   putupdateset_description	Exceptionclose)r
   dspbarniexprepared_itemer   r   r   run   sD   



$
zReaderWorker.runN)
__name__
__module____qualname____doc__intr   r   Queuer   r)   r   r   r   r   r      s    r   r   r   r   r	   c                 C   s   t | |||}|  dS )z%Entry point for reader worker processN)r   r)   )r   r   r   r	   workerr   r   r   reader_worker_process8   s   r1   )
multiprocessingr   	tqdm.autor   r   r   r   r.   r/   r1   r   r   r   r   <module>   s
     2