o
    Uݢg                     @  s.   d dl mZ d dlZd dlZG dd dZdS )    )annotationsNc                   @  s:   e Zd ZdZdddZdddZdd	 Zedd
dZdS )LogPerfzEPrint before/after maxrss and elapsed time for code blocks to stdout.returnNonec                 C  s   || _ d | _d S )N)notestart)selfr    r	   a/oak/stanford/groups/akundaje/marinovg/programs/cellranger-9.0.1/lib/python/cellranger/logperf.py__init__   s   
zLogPerf.__init__c                 C  s`   t  | _t| jdttjd d ddd t| jdttjd d dddd	 d S )
Nself_postmaxrss_mb	        @@0.1f	sepchildren_postmaxrss_mb	Tr   flush	timemonotonic_nsr   printr   resource	getrusageRUSAGE_SELFRUSAGE_CHILDREN)r   r	   r	   r
   	__enter__   s   

zLogPerf.__enter__c                 C  s   t  }| jd usJ t| jdttjd d ddd t| jdttjd d ddd t| jd|| j d	 d
ddd d S )Nr   r   r   r   r   r   r   zelapsed_sec	g    eAz.0fTr   r   )r   Ze_typeZe_valueZe_traceendr	   r	   r
   __exit__"   s$   
zLogPerf.__exit__c                   C  s@   t dttjd d   t dttjd d  dd d S )Nzself_maxrss_mb	%0.1fr   r   zchildren_maxrss_mb	%0.1fT)r   )r   r   r   r   r   r	   r	   r	   r
   mem6   s
   
zLogPerf.memN)r   r   )	__name__
__module____qualname____doc__r   r   r    staticmethodr!   r	   r	   r	   r
   r      s    

r   )
__future__r   r   r   r   r	   r	   r	   r
   <module>   s   