U
    )3gr
  ã                   @   sD   d dl Z d dlZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )é    Nc                   @   s2   e Zd Zdd„ Zdd„ Zedd„ ƒZd
dd	„ZdS )ÚHighLatencyReaderc                 C   s   || _ || _d S ©N©ÚrawÚlatency©Úselfr   r   © r	   ú1/tmp/pip-unpacked-wheel-0fuzq0j6/benchmarks/io.pyÚ__init__   s    zHighLatencyReader.__init__c                 C   s   | j  ¡  d S r   ©r   Úclose©r   r	   r	   r
   r      s    zHighLatencyReader.closec                 C   s   | j jS r   ©r   Úclosedr   r	   r	   r
   r      s    zHighLatencyReader.closedNc                 C   s   t  | j¡ | j |¡S r   )ÚtimeÚsleepr   r   Úread)r   Únbytesr	   r	   r
   r   #   s    zHighLatencyReader.read)N)Ú__name__Ú
__module__Ú__qualname__r   r   Úpropertyr   r   r	   r	   r	   r
   r      s
   
r   c                   @   s0   e Zd Zdd„ Zdd„ Zedd„ ƒZdd„ Zd	S )
ÚHighLatencyWriterc                 C   s   || _ || _d S r   r   r   r	   r	   r
   r   *   s    zHighLatencyWriter.__init__c                 C   s   | j  ¡  d S r   r   r   r	   r	   r
   r   .   s    zHighLatencyWriter.closec                 C   s   | j jS r   r   r   r	   r	   r
   r   1   s    zHighLatencyWriter.closedc                 C   s   t  | j¡ | j |¡ d S r   )r   r   r   r   Úwrite)r   Údatar	   r	   r
   r   5   s    zHighLatencyWriter.writeN)r   r   r   r   r   r   r   r   r	   r	   r	   r
   r   (   s
   
r   c                   @   s>   e Zd ZdZdZdZdZdZdZdddgZ	d	d
„ Z
dd„ ZdS )ÚBufferedIOHighLatencyz&Benchmark creating a parquet manifest.i   i   i   gš™™™™™¹?)r   r   g{®Gáz„?c                 C   s\   d| j  }d}t ¡ }t||ƒ}tj|| jd}|| jk rP| |¡ || j 7 }q0| ¡  d S )Nó   xr   ©Úbuffer_size)	Ú	incrementÚpaZBufferOutputStreamr   Zoutput_streamr   Ú
total_sizer   Úflush)r   r   Z	test_dataZbytes_writtenÚoutZslow_outZbuffered_outr	   r	   r
   Útime_buffered_writesE   s    



z*BufferedIOHighLatency.time_buffered_writesc                 C   sZ   d}t  t  d| j ¡¡}t||ƒ}t j|| jd}|| jk rV| | j¡ || j7 }q4d S )Nr   r   r   )r!   Zinput_streamZ	py_bufferr"   r   r   r   r    )r   r   Ú
bytes_readÚreaderZslow_readerZbuffered_readerr	   r	   r
   Útime_buffered_readsQ   s    
ÿ
z)BufferedIOHighLatency.time_buffered_readsN)r   r   r   Ú__doc__r    r"   r   r   Zparam_namesÚparamsr%   r(   r	   r	   r	   r
   r   :   s   
r   )r   Zpyarrowr!   Úobjectr   r   r   r	   r	   r	   r
   Ú<module>   s   