PATH:
usr
/
lib64
/
python3.6
#! /usr/bin/python3.6 """Python interface for the 'lsprof' profiler. Compatible with the 'profile' module. """ __all__ = ["run", "runctx", "Profile"] import _lsprof import profile as _pyprofile # ____________________________________________________________ # Simple interface def run(statement, filename=None, sort=-1): return _pyprofile._Utils(Profile).run(statement, filename, sort) def runctx(statement, globals, locals, filename=None, sort=-1): return _pyprofile._Utils(Profile).runctx(statement, globals, locals, filename, sort) run.__doc__ = _pyprofile.run.__doc__ runctx.__doc__ = _pyprofile.runctx.__doc__ # ____________________________________________________________ class Profile(_lsprof.Profiler): """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). """ # Most of the functionality is in the base class. # This subclass only adds convenient and backward-compatible methods. def print_stats(self, sort=-1): import pstats pstats.Stats(self).strip_dirs().sort_stats(sort).print_stats() def dump_stats(self, file): import marshal with open(file, 'wb') as f: self.create_stats() marshal.dump(self.stats, f) def create_stats(self): self.disable() self.snapshot_stats() def snapshot_stats(self): entries = self.getstats() self.stats = {} callersdicts = {} # call information for entry in entries: func = label(entry.code) nc = entry.callcount # ncalls column of pstats (before '/') cc = nc - entry.reccallcount # ncalls column of pstats (after '/') tt = entry.inlinetime # tottime column of pstats ct = entry.totaltime # cumtime column of pstats callers = {} callersdicts[id(entry.code)] = callers self.stats[func] = cc, nc, tt, ct, callers # subcall information for entry in entries: if entry.calls: func = label(entry.code) for subentry in entry.calls: try: callers = callersdicts[id(subentry.code)] except KeyError: continue nc = subentry.callcount cc = nc - subentry.reccallcount tt = subentry.inlinetime ct = subentry.totaltime if func in callers: prev = callers[func] nc += prev[0] cc += prev[1] tt += prev[2] ct += prev[3] callers[func] = nc, cc, tt, ct # The following two methods can be called by clients to use # a profiler to profile a statement, given as a string. def run(self, cmd): import __main__ dict = __main__.__dict__ return self.runctx(cmd, dict, dict) def runctx(self, cmd, globals, locals): self.enable() try: exec(cmd, globals, locals) finally: self.disable() return self # This method is more useful to profile a single function call. def runcall(self, func, *args, **kw): self.enable() try: return func(*args, **kw) finally: self.disable() # ____________________________________________________________ def label(code): if isinstance(code, str): return ('~', 0, code) # built-in functions ('~' sorts at the end) else: return (code.co_filename, code.co_firstlineno, code.co_name) # ____________________________________________________________ def main(): import os, sys, pstats from optparse import OptionParser usage = "cProfile.py [-o output_file_path] [-s sort] scriptfile [arg] ..." parser = OptionParser(usage=usage) parser.allow_interspersed_args = False parser.add_option('-o', '--outfile', dest="outfile", help="Save stats to <outfile>", default=None) parser.add_option('-s', '--sort', dest="sort", help="Sort order when printing to stdout, based on pstats.Stats class", default=-1, choices=sorted(pstats.Stats.sort_arg_dict_default)) if not sys.argv[1:]: parser.print_usage() sys.exit(2) (options, args) = parser.parse_args() sys.argv[:] = args if len(args) > 0: progname = args[0] sys.path.insert(0, os.path.dirname(progname)) with open(progname, 'rb') as fp: code = compile(fp.read(), progname, 'exec') globs = { '__file__': progname, '__name__': '__main__', '__package__': None, '__cached__': None, } runctx(code, globs, None, options.outfile, options.sort) else: parser.print_usage() return parser # When invoked as main program, invoke the profiler on a script if __name__ == '__main__': main()
[+]
..
[-] __phello__.foo.py
[edit]
[-] zipfile.py
[edit]
[-] _dummy_thread.py
[edit]
[-] signal.py
[edit]
[-] tabnanny.py
[edit]
[-] cmd.py
[edit]
[-] cProfile.py
[edit]
[-] tempfile.py
[edit]
[-] argparse.py
[edit]
[-] platform.py
[edit]
[-] binhex.py
[edit]
[-] antigravity.py
[edit]
[+]
curses
[-] _compat_pickle.py
[edit]
[-] statistics.py
[edit]
[-] inspect.py
[edit]
[-] ipaddress.py
[edit]
[-] sunau.py
[edit]
[-] imghdr.py
[edit]
[-] random.py
[edit]
[-] macpath.py
[edit]
[-] hmac.py
[edit]
[-] base64.py
[edit]
[-] cgitb.py
[edit]
[-] stringprep.py
[edit]
[-] ast.py
[edit]
[-] textwrap.py
[edit]
[-] enum.py
[edit]
[-] _compression.py
[edit]
[-] dis.py
[edit]
[+]
venv
[-] chunk.py
[edit]
[-] this.py
[edit]
[-] py_compile.py
[edit]
[-] fnmatch.py
[edit]
[+]
xml
[-] opcode.py
[edit]
[+]
site-packages
[-] sre_compile.py
[edit]
[-] _pyio.py
[edit]
[-] pty.py
[edit]
[-] datetime.py
[edit]
[-] macurl2path.py
[edit]
[+]
lib2to3
[+]
wsgiref
[-] heapq.py
[edit]
[-] keyword.py
[edit]
[-] codecs.py
[edit]
[+]
ensurepip
[-] pickletools.py
[edit]
[-] compileall.py
[edit]
[-] nturl2path.py
[edit]
[-] warnings.py
[edit]
[-] shutil.py
[edit]
[-] socket.py
[edit]
[-] pdb.py
[edit]
[-] zipapp.py
[edit]
[-] formatter.py
[edit]
[-] _sitebuiltins.py
[edit]
[-] _markupbase.py
[edit]
[-] types.py
[edit]
[-] runpy.py
[edit]
[-] uu.py
[edit]
[-] typing.py
[edit]
[-] pathlib.py
[edit]
[-] _threading_local.py
[edit]
[-] mailcap.py
[edit]
[-] bisect.py
[edit]
[-] linecache.py
[edit]
[-] colorsys.py
[edit]
[-] glob.py
[edit]
[-] sndhdr.py
[edit]
[-] ssl.py
[edit]
[-] _strptime.py
[edit]
[-] _sysconfigdata_m_linux_x86_64-linux-gnu.py
[edit]
[-] imp.py
[edit]
[-] contextlib.py
[edit]
[-] copyreg.py
[edit]
[-] filecmp.py
[edit]
[+]
logging
[-] operator.py
[edit]
[-] token.py
[edit]
[-] gzip.py
[edit]
[-] string.py
[edit]
[-] genericpath.py
[edit]
[-] _osx_support.py
[edit]
[-] stat.py
[edit]
[-] lzma.py
[edit]
[-] __future__.py
[edit]
[+]
distutils
[-] dummy_threading.py
[edit]
[+]
asyncio
[-] webbrowser.py
[edit]
[-] symtable.py
[edit]
[+]
lib-dynload
[-] getopt.py
[edit]
[-] wave.py
[edit]
[-] codeop.py
[edit]
[-] _sysconfigdata_dm_linux_x86_64-linux-gnu.py
[edit]
[-] abc.py
[edit]
[+]
config-3.6m-x86_64-linux-gnu
[+]
pydoc_data
[-] telnetlib.py
[edit]
[+]
unittest
[-] fileinput.py
[edit]
[-] ftplib.py
[edit]
[+]
ctypes
[-] _bootlocale.py
[edit]
[-] pipes.py
[edit]
[-] aifc.py
[edit]
[-] pprint.py
[edit]
[-] queue.py
[edit]
[-] difflib.py
[edit]
[+]
__pycache__
[-] uuid.py
[edit]
[-] reprlib.py
[edit]
[-] threading.py
[edit]
[+]
http
[-] sre_parse.py
[edit]
[-] subprocess.py
[edit]
[+]
importlib
[-] selectors.py
[edit]
[-] getpass.py
[edit]
[-] trace.py
[edit]
[-] struct.py
[edit]
[-] tracemalloc.py
[edit]
[-] plistlib.py
[edit]
[-] asynchat.py
[edit]
[-] fractions.py
[edit]
[-] shlex.py
[edit]
[-] bdb.py
[edit]
[-] locale.py
[edit]
[-] calendar.py
[edit]
[-] poplib.py
[edit]
[-] posixpath.py
[edit]
[-] imaplib.py
[edit]
[+]
concurrent
[-] pickle.py
[edit]
[-] timeit.py
[edit]
[+]
json
[-] traceback.py
[edit]
[+]
multiprocessing
[-] shelve.py
[edit]
[-] csv.py
[edit]
[-] tarfile.py
[edit]
[-] numbers.py
[edit]
[-] optparse.py
[edit]
[-] cgi.py
[edit]
[-] pstats.py
[edit]
[-] crypt.py
[edit]
[+]
collections
[-] site.py
[edit]
[-] pkgutil.py
[edit]
[-] re.py
[edit]
[-] pyclbr.py
[edit]
[-] socketserver.py
[edit]
[-] _pydecimal.py
[edit]
[-] pydoc.py
[edit]
[-] sre_constants.py
[edit]
[-] xdrlib.py
[edit]
[-] nntplib.py
[edit]
[-] mimetypes.py
[edit]
[+]
email
[-] quopri.py
[edit]
[-] doctest.py
[edit]
[-] profile.py
[edit]
[-] sched.py
[edit]
[-] hashlib.py
[edit]
[+]
urllib
[-] secrets.py
[edit]
[-] functools.py
[edit]
[-] smtplib.py
[edit]
[-] copy.py
[edit]
[+]
dbm
[-] tty.py
[edit]
[-] os.py
[edit]
[-] _collections_abc.py
[edit]
[-] configparser.py
[edit]
[-] _weakrefset.py
[edit]
[-] netrc.py
[edit]
[-] code.py
[edit]
[-] asyncore.py
[edit]
[-] tokenize.py
[edit]
[+]
encodings
[-] io.py
[edit]
[-] smtpd.py
[edit]
[-] sysconfig.py
[edit]
[-] decimal.py
[edit]
[+]
sqlite3
[-] rlcompleter.py
[edit]
[-] ntpath.py
[edit]
[+]
test
[-] weakref.py
[edit]
[-] symbol.py
[edit]
[-] modulefinder.py
[edit]
[+]
xmlrpc
[-] bz2.py
[edit]
[-] gettext.py
[edit]
[-] mailbox.py
[edit]
[+]
html