a DOgnY@srddlZddlZddlZddlZgdZGdddZdddZddd ZGd d d Zd d Z e dkrne dS)N)runrunctxProfilec@s,eZdZddZddZddZddZd S) _UtilscCs ||_dSN)profiler)selfrr ,/opt/alt/python39/lib64/python3.9/profile.py__init__0sz_Utils.__init__c CsR|}z4z||Wnty*Yn0W||||n||||0dSr)rr SystemExit_show)r statementfilenamesortprofr r r r3s  z _Utils.runc CsV|}z8z||||Wnty.Yn0W||||n||||0dSr)rrr r )rrglobalslocalsrrrr r r r<s  z _Utils.runctxcCs"|dur||n ||dSr) dump_stats print_stats)rrrrr r r r Es z _Utils._showN)__name__ __module__ __qualname__r rrr r r r r r*s  rcCstt|||Sr)rrr)rrrr r r rQs rcCstt|||||Sr)rrr)rrrrrr r r r^src@seZdZdZd3ddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ e e e e e e dZ ddZGdddZGdddZddZddZd4d!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd5d/d0Zd1d2ZdS)6rrNcCsi|_d|_d|_d|_|dur&|j}||_|sHtj|_|_|j |_ nj||_|}z t |}Wn t y||_|j |_ Yn00|dkr|j |_ n|j|_ |tfdd}||_||_|ddS)NcSs ||Srr )timersumr r r get_time_timersz(Profile.__init__..get_time_timerr)timingscurcmd c_func_namebiastime process_timerget_timetrace_dispatch_i dispatcherlen TypeErrortrace_dispatchtrace_dispatch_lrt simulate_call)rrr#r-Zlengthrr r r r s0     zProfile.__init__cCs|j}|}|d|d|j|j}|dkr8|j|_|j||||rd|}|d|d|_n|}|d|d||_dS)Nrc_callrr-r#rr"dispatch)rframeeventargrr-rr r r r+szProfile.trace_dispatchcCsT|j}||j|j}|dkr(|j|_|j||||rD||_n |||_dSNr0r1rr3r4r5rr-r r r r's zProfile.trace_dispatch_icCs`|j}|d|j|j}|dkr,|j|_|j||||rL|d|_n|d||_dS)NgN@r0r1r8r r r trace_dispatch_macszProfile.trace_dispatch_maccCsT|j}||j|j}|dkr(|j|_|j||||rD||_n |||_dSr7)r&r-r#rr"r2)rr3r4r5r&r-r r r r,s zProfile.trace_dispatch_lc CsD|j\}}}}}}||ur*|r*|||S|||||||f|_dSNr/)r trace_dispatch_return) rr3r-rptritretrfnrframercurr r r trace_dispatch_exceptions   z Profile.trace_dispatch_exceptioncCs|jr@|j|jdur@|j\}}}}}}t|tjs@||d|j} | j| j| j f} |dd| ||jf|_|j } | | vr| | \} } }}}| | d|||f| | <nddddif| | <dSNrr/) r f_back isinstancer fake_framer;f_code co_filenameco_firstlinenoco_namer)rr3r-r<r=r>r?r@rAZfcodefnrccnsttctcallersr r r trace_dispatch_calls  zProfile.trace_dispatch_callc Csndd|jf}|dd|||jf|_|j}||vrX||\}}}}} ||d||| f||<nddddif||<dS)Nrrr/)r"r r) rr3r-rLrrMrNrOrPrQr r r trace_dispatch_c_calls zProfile.trace_dispatch_c_callcCs||jdur ||jdd|j\}}}}}}||}||}|\} } } } } }| | || || | |f|_|j}||\}}}}}|s||}|d}| |vr|| d|| <nd|| <||d||||f||<dSrC)r r;r)rr3r-r<r=r>r?rAZ frame_totalZpptZpitZpetZpfnpframeZpcurrrMrNrOrPrQr r r r;"s"zProfile.trace_dispatch_return)callZ exceptionreturnr0Z c_exceptionZc_returncCs"|jdrdS||_||dS)Nr)r r!r.)rr!r r r set_cmdXszProfile.set_cmdc@seZdZddZddZdS)zProfile.fake_codecCs||_||_||_d|_dSNr)rIco_linerKrJ)rrlinenamer r r r ^szProfile.fake_code.__init__cCst|j|j|jfSr)reprrIrYrKrr r r __repr__dszProfile.fake_code.__repr__N)rrrr r^r r r r fake_code]sr_c@seZdZddZdS)zProfile.fake_framecCs||_||_dSr)rHrE)rcodeZpriorr r r r hszProfile.fake_frame.__init__N)rrrr r r r r rGgsrGcCsF|dd|}|jr |jd}nd}|||}|jd||ddS)NZprofilerrDrU)r_r rGr2)rr[r`rTr3r r r r.ls   zProfile.simulate_callcCsJ|j}||j}|jdr:|jd||jd|d}q|||_dS)NrrVrDr)r&r-r r2)rr&r-r r r simulate_cmd_completexs   zProfile.simulate_cmd_completercCs$ddl}|||dSrX)pstatsZStatsZ strip_dirsZ sort_statsr)rrrbr r r rszProfile.print_statscCsDt|d&}|t|j|Wdn1s60YdS)Nwb)open create_statsmarshaldumpstats)rfilefr r r rs zProfile.dump_statscCs||dSr)rasnapshot_statsr]r r r reszProfile.create_statsc Cs^i|_|jD]H\}\}}}}}|}d}|D] }||7}q6|||||f|j|<qdSrX)rhritemscopyvalues) rfuncrMrNrOrPrQZncZcallcntr r r rks  zProfile.snapshot_statscCsddl}|j}||||SrX)__main____dict__r)rr!rpdictr r r rsz Profile.runc CsB||t|jzt|||Wtdn td0|Sr)rWsys setprofiler(exec)rr!rrr r r rs   zProfile.runctxc OsF|t|t|jz||i|WtdStd0dSr)rWr\rsrtr()rroargskwr r r runcalls  zProfile.runcallcCs@|jturtd|j}d|_z|||W||_S||_0dS)Nz&Subclasses must override .calibrate().r) __class__rr*r#_calibrate_inner)rmverboseZ saved_biasr r r calibrates  zProfile.calibratecCs|j}dd}|fdd}|||}|||}||}|rLtd|t} |}| dtt|}||} |rtd| d} d} | jD]0\\} }}\}}}}}|d vr| |7} | |7} q|rtd | td | | |d krtd | | |d| }|rtd||S)NcSst|D]}d}qdSr:range)nixr r r f1s z$Profile._calibrate_inner..f1cSst|D] }|dqdS)Ndr~)r{rrr r r rjs z#Profile._calibrate_inner..fz elapsed time without profiling =zf(m)zelapsed time with profiling =g)rjrz!'CPU seconds' profiler reported =ztotal # calls =r/z internal error: total calls = %dg@z+mean stopwatch overhead per profile event =) r&printrrrrrrl ValueError)rr{r|r&rrjZt0t1Zelapsed_noprofilepZelapsed_profileZ total_callsZ reported_timerrZfuncnamerMrNrOrPrQZmeanr r r rzsB         zProfile._calibrate_inner)NN)r)r)rrrr#r r+r'r9r,rBrRrSr;r2rWr_rGr.rarrrerkrrrxr}rzr r r r rgs>' ' '     1 rc Csddl}ddlm}d}||d}d|_|jdddd dd |jd d d ddd|jdddddd tjdds|td| \}}|tjdd<|j dur|j |j |_ t |dkr|jrddl}d}|j|dd}nh|d} tj d|j | t|  } t| | d}Wdn1s:0Y| dddd}zt||d|j |jWn8ty} zdt_t| jWYd} ~ n d} ~ 00n||S)Nr) OptionParserzMprofile.py [-o output_file_path] [-s sort] [-m module | scriptfile] [arg] ...)usageFz-oz --outfileoutfilezSave stats to )desthelpdefaultz-mmodule store_truezProfile a library module.)ractionrrz-sz--sortrz?Sort order when printing to stdout, based on pstats.Stats classrr/rz(run_module(modname, run_name='__main__')) run_modulemodnamerurp)__file__r __package__ __cached__)osZoptparserZallow_interspersed_argsZ add_optionrsargvZ print_usageexit parse_argsrpathabspathr)rrunpyrinsertdirnameio open_codecompilereadrrBrokenPipeErrorstdouterrno) rrrparserZoptionsrvrr`ZglobsZprognamefpexcr r r main)sZ         0$rrp)Nr)Nr) rrsr$rf__all__rrrrrrr r r r s ' E9