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

  \  ã               @   sz   d Z dddgZddlZddlZddd„Zddd„Zejj e_ ejj e_ G d	d„ dejƒZd
d„ Z	dd„ Z
edkrve
ƒ  dS )zUPython interface for the 'lsprof' profiler.
   Compatible with the 'profile' module.
ÚrunÚrunctxÚProfileé    Né   c             C   s   t jtƒj| ||ƒS )N)Ú
_pyprofileÚ_Utilsr   r   )Ú	statementÚfilenameÚsort© r   ú /usr/lib64/python3.6/cProfile.pyr      s    c             C   s   t jtƒj| ||||ƒS )N)r   r   r   r   )r   ÚglobalsÚlocalsr	   r
   r   r   r   r      s    c               @   sJ   e Zd Z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   a`  Profile(timer=None, timeunit=None, subcalls=True, builtins=True)

    Builds a profiler object using the specified timer function.
    The default timer is a fast built-in one based on real time.
    For custom timer functions returning integers, timeunit can
    be a float specifying a scale (i.e. how long each integer unit
    is, in seconds).
    r   c             C   s$   dd l }|j| ƒjƒ j|ƒjƒ  d S )Nr   )ÚpstatsÚStatsZ
strip_dirsZ
sort_statsÚprint_stats)Úselfr
   r   r   r   r   r   (   s    zProfile.print_statsc          
   C   s8   dd l }t|dƒ�}| jƒ  |j| j|ƒ W d Q R X d S )Nr   Úwb)ÚmarshalÚopenÚcreate_statsÚdumpÚstats)r   Úfiler   Úfr   r   r   Ú
dump_stats,   s    zProfile.dump_statsc             C   s   | j ƒ  | jƒ  d S )N)ÚdisableÚsnapshot_stats)r   r   r   r   r   2   s    zProfile.create_statsc             C   s6  | j ƒ }i | _i }xX|D ]P}t|jƒ}|j}||j }|j}|j}i }	|	|t|jƒ< |||||	f| j|< qW xÄ|D ]¼}|j	rrt|jƒ}x¦|j	D ]œ}
y|t|
jƒ }	W n t
k
rº   wŽY nX |
j}||
j }|
j}|
j}||	k�r|	| }||d 7 }||d 7 }||d 7 }||d 7 }||||f|	|< qŽW qrW d S )Nr   r   é   é   )Zgetstatsr   ÚlabelÚcodeZ	callcountZreccallcountZ
inlinetimeZ	totaltimeÚidZcallsÚKeyError)r   ZentriesZcallersdictsÚentryÚfuncZncZccZttZctZcallersZsubentryÚprevr   r   r   r   6   s>    






zProfile.snapshot_statsc             C   s   dd l }|j}| j|||ƒS )Nr   )Ú__main__Ú__dict__r   )r   Úcmdr'   Údictr   r   r   r   \   s    zProfile.runc          
   C   s(   | j ƒ  zt|||ƒ W d | jƒ  X | S )N)ÚenableÚexecr   )r   r)   r   r   r   r   r   r   a   s
    
zProfile.runctxc          
   O   s"   | j ƒ  z
|||ŽS | jƒ  X d S )N)r+   r   )r   r%   ÚargsÚkwr   r   r   Úruncallj   s    
zProfile.runcallNéÿÿÿÿ)r0   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r/   r   r   r   r   r      s   
&	c             C   s(   t | tƒrdd| fS | j| j| jfS d S )Nú~r   )Ú
isinstanceÚstrÚco_filenameÚco_firstlinenoÚco_name)r!   r   r   r   r    s   s    

r    c              C   s&  dd l } dd l}dd l}ddlm} d}||d�}d|_|jdddd	d d
� |jdddddt|jj	ƒd� |j
dd … sŠ|jƒ  |jdƒ |jƒ \}}||j
d d …< t|ƒdk�r|d }|jjd| jj|ƒƒ t|dƒ�}	t|	jƒ |dƒ}
W d Q R X |dd d dœ}t|
|d |j|jƒ n|jƒ  |S )Nr   )ÚOptionParserz@cProfile.py [-o output_file_path] [-s sort] scriptfile [arg] ...)ÚusageFz-oz	--outfileÚoutfilezSave stats to <outfile>)ÚdestÚhelpÚdefaultz-sz--sortr
   z?Sort order when printing to stdout, based on pstats.Stats classr   )r>   r?   r@   Úchoicesr   Úrbr,   r'   )Ú__file__r1   Ú__package__Ú
__cached__r0   )ÚosÚsysr   Zoptparser;   Zallow_interspersed_argsZ
add_optionÚsortedr   Zsort_arg_dict_defaultÚargvZprint_usageÚexitÚ
parse_argsÚlenÚpathÚinsertÚdirnamer   ÚcompileÚreadr   r=   r
   )rF   rG   r   r;   r<   ÚparserZoptionsr-   ZprognameÚfpr!   Zglobsr   r   r   Úmain{   s8    




rT   r'   r0   )Nr0   r0   )Nr0   )r4   Ú__all__Z_lsprofZprofiler   r   r   ZProfilerr   r    rT   r1   r   r   r   r   Ú<module>   s   




X%