
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aû[  ã                   @   sl   d dl Z d dlZd dlZdddgZG dd„ dƒZddd„Zdd	d„ZG d
d„ dƒZdd„ Ze	dkrheƒ  dS )é    NÚrunÚrunctxÚProfilec                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú_Utilsc                 C   s
   || _ d S ©N)Úprofiler)Úselfr   © r	   ú,/opt/alt/python38/lib64/python3.8/profile.pyÚ__init__/   s    z_Utils.__init__c                 C   sF   |   ¡ }z(z| |¡ W n tk
r,   Y nX W 5 |  |||¡ X d S r   )r   Ú_showr   Ú
SystemExit)r   Ú	statementÚfilenameÚsortÚprofr	   r	   r
   r   2   s    
z
_Utils.runc                 C   sJ   |   ¡ }z,z| |||¡ W n tk
r0   Y nX W 5 |  |||¡ X d S r   )r   r   r   r   )r   r   ÚglobalsÚlocalsr   r   r   r	   r	   r
   r   ;   s    
z_Utils.runctxc                 C   s"   |d k	r|  |¡ n
| |¡ d S r   )Ú
dump_statsÚprint_stats)r   r   r   r   r	   r	   r
   r   D   s    z_Utils._showN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r	   r	   r	   r
   r   )   s   		r   éÿÿÿÿc                 C   s   t tƒ | ||¡S r   )r   r   r   )r   r   r   r	   r	   r
   r   P   s    c                 C   s   t tƒ | ||||¡S r   )r   r   r   )r   r   r   r   r   r	   r	   r
   r   ]   s    c                   @   sò   e Zd ZdZd4d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
e	eeeedœZdd„ ZG dd„ dƒZG dd„ dƒZdd„ Zdd„ Zd5d!d"„Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/e_d6d0d1„Zd2d3„ ZdS )7r   r   Nc                 C   sÌ   i | _ d | _d| _d| _|d kr&| j}|| _|sHtj | _| _| j	| _
nl|| _|  ¡ }zt|ƒ}W n" tk
r„   || _| j	| _
Y n0X |dkr˜| j| _
n| j| _
|tfdd„}|| _|  ¡ | _|  d¡ d S )NÚ é   c                 S   s
   || ƒ ƒS r   r	   )ÚtimerÚsumr	   r	   r
   Úget_time_timer®   s    z(Profile.__init__.<locals>.get_time_timerr   )ÚtimingsÚcurÚcmdÚc_func_nameÚbiasÚtimeÚprocess_timer   Úget_timeÚtrace_dispatch_iÚ
dispatcherÚlenÚ	TypeErrorÚtrace_dispatchÚtrace_dispatch_lr   ÚtÚsimulate_call)r   r   r#   r-   Zlengthr   r	   r	   r
   r   �   s0    


zProfile.__init__c                 C   s„   | j }|ƒ }|d |d  | j | j }|dkr8|j| _| j| | ||ƒrd|ƒ }|d |d  | _n|ƒ }|d |d  | | _d S )Nr   é   Úc_call©r   r-   r#   r   r"   Údispatch)r   ÚframeÚeventÚargr   r-   Úrr	   r	   r
   r+   ¶   s    zProfile.trace_dispatchc                 C   sT   | j }|ƒ | j | j }|dkr(|j| _| j| | ||ƒrD|ƒ | _n|ƒ | | _d S ©Nr0   r1   ©r   r3   r4   r5   r   r-   r	   r	   r
   r'   È   s    
zProfile.trace_dispatch_ic                 C   s`   | j }|ƒ d | j | j }|dkr,|j| _| j| | ||ƒrL|ƒ d | _n|ƒ d | | _d S )Ng      N@r0   r1   r8   r	   r	   r
   Útrace_dispatch_mac×   s    zProfile.trace_dispatch_macc                 C   sT   | j }|ƒ | j | j }|dkr(|j| _| j| | ||ƒrD|ƒ | _n|ƒ | | _d S r7   )r&   r-   r#   r   r"   r2   )r   r3   r4   r5   r&   r-   r	   r	   r
   r,   å   s    
zProfile.trace_dispatch_lc           	      C   sD   | j \}}}}}}||k	r*|r*|  ||¡S ||| ||||f| _ dS ©Nr/   )r    Útrace_dispatch_return)	r   r3   r-   ÚrptÚritÚretÚrfnÚrframeÚrcurr	   r	   r
   Útrace_dispatch_exceptionø   s
    z Profile.trace_dispatch_exceptionc                 C   s¸   | j r@|j| j d k	r@| j \}}}}}}t|tjƒs@|  |d¡ |j}	|	j|	j|	j	f}
|dd|
|| j f| _ | j
}|
|kr¢||
 \}}}}}||d |||f||
< nddddi f||
< dS ©Néþÿÿÿr   r/   )r    Úf_backÚ
isinstancer   Ú
fake_framer;   Úf_codeÚco_filenameÚco_firstlinenoÚco_namer   )r   r3   r-   r<   r=   r>   r?   r@   rA   ZfcodeÚfnr   ÚccÚnsÚttÚctÚcallersr	   r	   r
   Útrace_dispatch_call   s    zProfile.trace_dispatch_callc           
      C   sn   dd| j f}|dd||| jf| _| j}||krX|| \}}}}}	||d |||	f||< nddddi f||< dS )Nr   r   r/   )r"   r    r   )
r   r3   r-   rL   r   rM   rN   rO   rP   rQ   r	   r	   r
   Útrace_dispatch_c_call  s    zProfile.trace_dispatch_c_callc                 C   sØ   || j d k	r |  | j d d¡ | j \}}}}}}|| }|| }|\}	}
}}}}|	|
| || |||f| _ | j}|| \}}}}}|s˜|| }|d }||kr²|| d ||< nd||< ||d || ||f||< dS rC   )r    r;   r   )r   r3   r-   r<   r=   r>   r?   rA   Zframe_totalZpptZpitZpetZpfnÚpframeZpcurr   rM   rN   rO   rP   rQ   r	   r	   r
   r;   !  s"    zProfile.trace_dispatch_return)ÚcallZ	exceptionÚreturnr0   Zc_exceptionZc_returnc                 C   s"   | j d rd S || _|  |¡ d S )Nr   )r    r!   r.   )r   r!   r	   r	   r
   Úset_cmdW  s    
 zProfile.set_cmdc                   @   s   e Zd Zdd„ Zdd„ ZdS )zProfile.fake_codec                 C   s   || _ || _|| _d| _d S ©Nr   )rI   Úco_linerK   rJ   )r   r   ÚlineÚnamer	   r	   r
   r   ]  s    zProfile.fake_code.__init__c                 C   s   t | j| j| jfƒS r   )ÚreprrI   rY   rK   ©r   r	   r	   r
   Ú__repr__c  s    zProfile.fake_code.__repr__N)r   r   r   r   r^   r	   r	   r	   r
   Ú	fake_code\  s   r_   c                   @   s   e Zd Zdd„ ZdS )zProfile.fake_framec                 C   s   || _ || _d S r   )rH   rE   )r   ÚcodeZpriorr	   r	   r
   r   g  s    zProfile.fake_frame.__init__N)r   r   r   r   r	   r	   r	   r
   rG   f  s   rG   c                 C   sF   |   dd|¡}| jr | jd }nd }|  ||¡}| jd | |dƒ d S )NZprofiler   rD   rU   )r_   r    rG   r2   )r   r[   r`   rT   r3   r	   r	   r
   r.   k  s    zProfile.simulate_callc                 C   sJ   | j }|ƒ | j }| jd r:| jd | | jd |ƒ d}q|ƒ | | _d S )Nr   rV   rD   r   )r&   r-   r    r2   )r   r&   r-   r	   r	   r
   Úsimulate_cmd_completew  s    
zProfile.simulate_cmd_completer   c                 C   s$   dd l }| | ¡ ¡  |¡ ¡  d S rX   )ÚpstatsZStatsZ
strip_dirsZ
sort_statsr   )r   r   rb   r	   r	   r
   r   ‚  s    zProfile.print_statsc              	   C   s0   t |dƒ�}|  ¡  t | j|¡ W 5 Q R X d S )NÚwb)ÚopenÚcreate_statsÚmarshalÚdumpÚstats)r   ÚfileÚfr	   r	   r
   r   ‡  s    zProfile.dump_statsc                 C   s   |   ¡  |  ¡  d S r   )ra   Úsnapshot_statsr]   r	   r	   r
   re   Œ  s    zProfile.create_statsc           	      C   s^   i | _ | j ¡ D ]H\}\}}}}}| ¡ }d}| ¡ D ]}||7 }q6|||||f| j |< qd S rX   )rh   r   ÚitemsÚcopyÚvalues)	r   ÚfuncrM   rN   rO   rP   rQ   ZncZcallcntr	   r	   r
   rk   �  s    
zProfile.snapshot_statsc                 C   s   dd l }|j}|  |||¡S rX   )Ú__main__Ú__dict__r   )r   r!   rp   Údictr	   r	   r
   r   �  s    zProfile.runc              	   C   s8   |   |¡ t | j¡ zt|||ƒ W 5 t d ¡ X | S r   )rW   ÚsysÚ
setprofiler(   Úexec)r   r!   r   r   r	   r	   r
   r   ¢  s    
zProfile.runctxc               	   O   s¨   t | ƒdkr| ^}}} nV| s&tdƒ‚nHd|krZ| d¡}| ^}} dd l}|jdtdd� ntdt | ƒd  ƒ‚| t|ƒ¡ t 	|j
¡ z|| |ŽW ¢S t 	d ¡ X d S )	Nr   z:descriptor 'runcall' of 'Profile' object needs an argumentro   r   z0Passing 'func' as keyword argument is deprecated)Ú
stacklevelz7runcall expected at least 1 positional argument, got %dr/   )r)   r*   ÚpopÚwarningsÚwarnÚDeprecationWarningrW   r\   rs   rt   r(   )ÚargsÚkwr   ro   rx   r	   r	   r
   Úruncall¬  s(    

 ÿ
ÿzProfile.runcallz($self, func, /, *args, **kw)c                 C   s<   | j tk	rtdƒ‚| j}d| _z|  ||¡W ¢S || _X d S )Nz&Subclasses must override .calibrate().r   )Ú	__class__r   r*   r#   Ú_calibrate_inner)r   ÚmÚverboseZ
saved_biasr	   r	   r
   Ú	calibrateí  s    
zProfile.calibratec                 C   s  | j }dd„ }|fdd„}||ƒ |ƒ }||ƒ |ƒ }|| }|rLtd|ƒ tƒ }	|ƒ }|	 dtƒ tƒ ¡ |ƒ }|| }
|r†td|
ƒ d}d}|	j ¡ D ]0\\}}}\}}}}}|d	kr˜||7 }||7 }q˜|râtd
|ƒ td|ƒ ||d krútd| ƒ‚|| d | }|�rtd|ƒ |S )Nc                 S   s   t | ƒD ]}d}qd S r:   ©Úrange)ÚnÚiÚxr	   r	   r
   Úf1  s    z$Profile._calibrate_inner.<locals>.f1c                 S   s   t | ƒD ]}|dƒ qd S )Néd   rƒ   )r€   rˆ   r†   r	   r	   r
   rj     s    z#Profile._calibrate_inner.<locals>.fz elapsed time without profiling =zf(m)zelapsed time with profiling =g        )rj   rˆ   z!'CPU seconds' profiler reported =ztotal # calls =r/   z internal error: total calls = %dg       @z+mean stopwatch overhead per profile event =)	r&   Úprintr   r   r   r   r   rl   Ú
ValueError)r   r€   r�   r&   rˆ   rj   Zt0Út1Zelapsed_noprofileÚpZelapsed_profileZtotal_callsZreported_timer   rZ   ÚfuncnamerM   rN   rO   rP   rQ   Zmeanr	   r	   r
   r   ø  sB    

ÿ



zProfile._calibrate_inner)NN)r   )r   )r   r   r   r#   r   r+   r'   r9   r,   rB   rR   rS   r;   r2   rW   r_   rG   r.   ra   r   r   re   rk   r   r   r}   Ú__text_signature__r‚   r   r	   r	   r	   r
   r   f   s@   '
''ú


+
c               
   C   sš  dd l } ddlm} d}||d�}d|_|jdddd	d d
� |jdddddd� |jdddddd
� tjdd … s„| ¡  t d¡ | 	¡ \}}|tjd d …< |j
d k	r¸| j |j
¡|_
t|ƒdk�rŽ|jrêdd l}d}|j|d dœ}nR|d }	tj d| j |	¡¡ t|	dƒ�}
t|
 ¡ |	dƒ}W 5 Q R X |	dd d dœ}zt||d |j
|jƒ W n6 tk
�rŠ } zd t_t |j¡ W 5 d }~X Y nX n| ¡  |S )Nr   )ÚOptionParserzMprofile.py [-o output_file_path] [-s sort] [-m module | scriptfile] [arg] ...)ÚusageFz-oz	--outfileÚoutfilezSave stats to <outfile>)ÚdestÚhelpÚdefaultz-mÚmoduleÚ
store_truezProfile a library module.)r“   Úactionr”   r•   z-sz--sortr   z?Sort order when printing to stdout, based on pstats.Stats classr   r/   r   z(run_module(modname, run_name='__main__'))Ú
run_moduleÚmodnameÚrbru   rp   )Ú__file__r   Ú__package__Ú
__cached__)ÚosZoptparser�   Zallow_interspersed_argsZ
add_optionrs   ÚargvZprint_usageÚexitÚ
parse_argsr’   ÚpathÚabspathr)   r–   Úrunpyr™   ÚinsertÚdirnamerd   ÚcompileÚreadr   r   ÚBrokenPipeErrorÚstdoutÚerrno)rŸ   r�   r‘   ÚparserZoptionsr{   r¥   r`   ZglobsZprognameÚfpÚexcr	   r	   r
   Úmain8  s^    

 ÿ
 ÿ
þ

þü r°   rp   )Nr   )Nr   )
rs   r$   rf   Ú__all__r   r   r   r   r°   r   r	   r	   r	   r
   Ú<module>   s   

'

	   U9