a
    =_/                     @   sh  d dl Z d dlZd dlZe atadd Zdd Zdd Zdd	 Zd
d Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zed krdd dlZd dlZd dlZd!d" Ze Ze Zd#D ]Zeeer qqd$e_ej Z ej!Z!ej"Z"ejrd	Z#dZ$njej%r(dZ#dZ$nXej&r:dZ#dZ$nFej'rLdZ#dZ$n4ej(r^dZ#dZ$n"ej)rpdZ#dZ$nej*rdZ#dZ$ed% ej+rejre,e-e#d& d' e.d'Z/e/0  e/1d(d) ej2re/3  n
e/3d* ne4e#d&  ej5rdejrXe,e$d& d+ e.d+Z/e/0  e/1d(d) ej2rLe6d, e/3  n
e/3d* ne4e$d&  dS )-    Nc           
      C   sT  dt   }t|}|D ]}|dr:t| d }q|drVt| d }q|drrt| d }q|drt| d }q|drt| d }q|drt| d }	qW d    n1 s0    Y  td	|   td
||f  td||f  td||	f  tdt t dd tdt t	  t a	d S )Nz/proc/%s/statuszVmSize:   zVmRSS:zVmData:zVmStk:zVmExe:zVmLib:z!
Memory usage: ******* %s *******zVmSize: %7s kB	VmRSS: %7s kBzVmData: %7s kB	VmStk: %7s kBzVmExe:  %7s kB	VmLib: %7s kBzWallClock time: )endz  Delta time:)
osgetpidopen
startswithintsplitprinttimetreftrel)
ZexplainfilenamefdlineZvmsizeZvmrssZvmdataZvmstkZvmexeZvmlib r   7lib/python3.9/site-packages/tables/tests/check_leaks.pyshow_mem   s,    






0r   c                 C   sf   t |D ]X}tj| dd}t |D ] }||jdt| d|  q"td|  |  td qd S )Nwmodegroup	child: %dAfter creating. Iter %sAfter close)rangetables	open_fileZcreate_grouprootstrr   closer   	nchildrenniterifilehchildr   r   r   write_group(   s    r(   c                 C   sl   t |D ]^}tj| dd}t |D ]&}||jdt| }|d us"J q"td|  |  td qd S )Nrr   r   zAfter reading metadata. Iter %sr   r   r   r   Zget_noder   r    r   r!   r   r#   r$   r%   r&   r'   noder   r   r   
read_group3   s    r-   c              	   C   sl   t |D ]^}tj| dd}t |D ]&}||jdt| ddgd|  q"td|  |  td qd S )Nr   r   arrayr   r   r   r   )r   r   r   Zcreate_arrayr   r    r   r!   r"   r   r   r   write_arrayA   s    r/   c                 C   sx   t |D ]j}tj| dd}t |D ]2}||jdt| }|d d  }|d us"J q"td|  |  td qd S Nr)   r   r.   After reading data. Iter %sr   r*   r   r#   r$   r%   r&   r'   r,   datar   r   r   
read_arrayL   s    r4   c              
   C   sn   t |D ]`}tj| dd}t |D ](}||jdt| t dd|  q"td|  |  td qd S )Nr   r   r.   )   r   r   r   )	r   r   r   Zcreate_carrayr   r    IntAtomr   r!   r"   r   r   r   write_carray`   s    r7   c                 C   sx   t |D ]j}tj| dd}t |D ]2}||jdt| }|d d  }|d us"J q"td|  |  td qd S r0   r*   r2   r   r   r   read_carrayk   s    r8   c              	   C   s~   t |D ]p}tj| dd}t |D ]8}|j|jdt| t dd| d}|g d q"td|  |	  td	 qd S )
Nr   r   r.   )r   r   )shapetitler   r5      r   r   )
r   r   r   Zcreate_earrayr   r    r6   appendr   r!   )r   r#   r$   r%   r&   r'   Zear   r   r   write_earrayy   s    r>   c                 C   sx   t |D ]j}tj| dd}t |D ]2}||jdt| }|d d  }|d us"J q"td|  |  td qd S r0   r*   r2   r   r   r   read_earray   s    r?   c              	   C   sz   t |D ]l}tj| dd}t |D ]4}||jdt| t d| }|g d q"td|  |	  td qd S )Nr   r   r.   r   r;   r   r   )
r   r   r   Zcreate_vlarrayr   r    r6   r=   r   r!   )r   r#   r$   r%   r&   r'   Zvlr   r   r   write_vlarray   s    r@   c                 C   sx   t |D ]j}tj| dd}t |D ]2}||jdt| }|d d  }|d us"J q"td|  |  td qd S r0   r*   r2   r   r   r   read_vlarray   s    rA   c              	   C   s   G dd dt j}t|D ]j}t j| dd}t|D ]2}||jdt| |d| }|g dg q4td|  |	  td	 qd S )
Nc                   @   s2   e Zd ZejddZejdddZejddZ	dS )zwrite_table.<locals>.Recordr   posr5   ZlengthrC   r<   N
__name__
__module____qualname__r   ZIntColvar1Z	StringColZvar2ZFloatColZvar3r   r   r   r   Record   s   rJ   r   r   tabler   r   2g      @r   r   )
r   IsDescriptionr   r   create_tabler   r    r=   r   r!   r   r#   r$   rJ   r%   r&   r'   tr   r   r   write_table   s    rR   c                 C   sx   t |D ]j}tj| dd}t |D ]2}||jdt| }|d d  }|d us"J q"td|  |  td qd S Nr)   r   rK   r1   r   r*   r2   r   r   r   
read_table   s    rT   c              	   C   s   G dd dt j}t|D ]v}t j| dd}t|D ]>}||jdt| |d| }|g dg |jj	
  q4td|  |  td	 qd S )
Nc                   @   s2   e Zd ZejddZejdddZejddZ	dS )zwrite_xtable.<locals>.Recordr   rB   r5   rD   r<   NrE   r   r   r   r   rJ      s   rJ   r   r   rK   r   rL   r   r   )r   rN   r   r   rO   r   r    r=   ZcolsrI   Zcreate_indexr   r!   rP   r   r   r   write_xtable   s    rU   c                 C   sb   t |D ]T}tj| dd}t |D ]}||jdt| }q"td|  |  td ~qd S rS   r*   r+   r   r   r   read_xtable   s    rV   __main__c                  C   s  t jdd} | jddddd | jdd	dd
d | jddddd | jddddd | jddddd | jddddd | jddddd | jdddddd | jdd dd!d | jd"d#dd$d | jd%d&dd'd | jd(d)td*d+d, | jd-d.td/d0d, | jd1d2d3 | S )4Nz Check for PyTables memory leaks.)Zdescriptionz-vz	--verbose
store_truezenable verbose mode)actionhelpz-pz	--profileprofilez-az--arrayzcreate/read arrays (default)z-cz--carrayzcreate/read carraysz-ez--earrayzcreate/read earraysz-lz	--vlarrayzcreate/read vlarraysz-tz--tablezcreate/read tablesz-xz--indexed-tablextablezcreate/read indexed-tables)rY   destrZ   z-gz--groupzcreate/read groupsz-rz--readzonly read testz-wz--writezonly write testz-nz--nchildreni  z/number of children (%(default)d is the default))typedefaultrZ   z-iz--niterr<   z+number of iterations (default: %(default)d)r   zHDF5 file name)rZ   )argparseArgumentParseradd_argumentr	   )parserr   r   r   _get_parser   sX    










rd   )carrayearrayvlarrayrK   r\   r   TzBefore openz(filename, nchildren, niter)zwrite_file.profr   Zcalls   zread_file.profzprofile -verbose)7r   r   r   r   r   r   r(   r-   r/   r4   r7   r8   r>   r?   r@   rA   rR   rT   rU   rV   rF   Zpstatsr`   r[   Zprofrd   rc   
parse_argsargsnamegetattrr.   r   r#   r$   ZfwriteZfreadre   rf   rg   rK   r\   r   writerunr    ZStatsZstatsZ
strip_dirsZ
sort_statsverboseZprint_statsevalreadr   r   r   r   r   <module>   s   
#




