3 \@svdddgZddlZddlZdddZdddZejje_ejje_GdddejZd d Z d d Z e d krre dS)runrunctxProfileNcCstjtj|||S)N) _pyprofile_Utilsrr) statementfilenamesortr /usr/lib64/python3.6/cProfile.pyrscCstjtj|||||S)N)rrrr)rglobalslocalsr r r r r rsc@sFeZdZdddZddZddZdd Zd d Zd d ZddZ dS)rrcCs$ddl}|j|jj|jdS)Nr)pstatsStatsZ strip_dirsZ sort_stats print_stats)selfr rr r r r(szProfile.print_statsc Cs8ddl}t|d}|j|j|j|WdQRXdS)Nrwb)marshalopen create_statsdumpstats)rfilerfr r r dump_stats,s zProfile.dump_statscCs|j|jdS)N)disablesnapshot_stats)rr r r r2szProfile.create_statsc Cs6|j}i|_i}xX|D]P}t|j}|j}||j}|j}|j}i} | |t|j<||||| f|j|<qWx|D]}|j rrt|j}x|j D]} y|t| j} Wnt k rwYnX| j}|| j}| j}| j}|| kr| |} || d7}|| d7}|| d7}|| d7}||||f| |<qWqrWdS)Nrr) ZgetstatsrlabelcodeZ callcountZ reccallcountZ inlinetimeZ totaltimeidZcallsKeyError) rZentriesZ callersdictsentryfuncZncZccZttZctZcallersZsubentryprevr r r r6s>            zProfile.snapshot_statscCsddl}|j}|j|||S)Nr)__main____dict__r)rcmdr'dictr r r r\sz Profile.runc Cs(|jzt|||Wd|jX|S)N)enableexecr)rr)r rr r r ras  zProfile.runctxc Os"|jz |||S|jXdS)N)r+r)rr%argskwr r r runcalljs zProfile.runcallN)r0) __name__ __module__ __qualname__rrrrrrr/r r r r rs & cCs(t|trdd|fS|j|j|jfSdS)N~r) isinstancestr co_filenameco_firstlinenoco_name)r!r r r r ss  r c Cs&ddl}ddl}ddl}ddlm}d}||d}d|_|jdddd dd |jd d d ddt|jj d|j dds|j |j d|j \}}||j dd<t|dkr|d}|jjd|jj|t|d} t| j|d} WdQRX|dddd} t| | d|j|jn|j |S)Nr) OptionParserz@cProfile.py [-o output_file_path] [-s sort] scriptfile [arg] ...)usageFz-oz --outfileoutfilezSave stats to )desthelpdefaultz-sz--sortr z?Sort order when printing to stdout, based on pstats.Stats classr)r=r>r?choicesrrbr,r')__file__r1 __package__ __cached__r0)ossysrZoptparser:Zallow_interspersed_argsZ add_optionsortedrZsort_arg_dict_defaultargvZ print_usageexit parse_argslenpathinsertdirnamercompilereadrr<r ) rErFrr:r;parserZoptionsr-Zprognamefpr!Zglobsr r r main{s8        rSr'r0)Nr0r0)Nr0) __all__Z_lsprofZprofilerrr__doc__ZProfilerrr rSr1r r r r s     X%