PHP 8.2.30
Preview: cProfile.py Size: 6.48 KB
/opt/alt/python313/lib64/python3.13/cProfile.py

#! /opt/alt/python313/bin/python3.13

"""Python interface for the 'lsprof' profiler.
   Compatible with the 'profile' module.
"""

__all__ = ["run", "runctx", "Profile"]

import _lsprof
import importlib.machinery
import io
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
        if not isinstance(sort, tuple):
            sort = (sort,)
        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 __enter__(self):
        self.enable()
        return self

    def __exit__(self, *exc_info):
        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
    import sys
    import runpy
    import pstats
    from optparse import OptionParser
    usage = "cProfile.py [-o output_file_path] [-s sort] [-m module | 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=2,
        choices=sorted(pstats.Stats.sort_arg_dict_default))
    parser.add_option('-m', dest="module", action="store_true",
        help="Profile a library module", default=False)

    if not sys.argv[1:]:
        parser.print_usage()
        sys.exit(2)

    (options, args) = parser.parse_args()
    sys.argv[:] = args

    # The script that we're profiling may chdir, so capture the absolute path
    # to the output file at startup.
    if options.outfile is not None:
        options.outfile = os.path.abspath(options.outfile)

    if len(args) > 0:
        if options.module:
            code = "run_module(modname, run_name='__main__')"
            globs = {
                'run_module': runpy.run_module,
                'modname': args[0]
            }
        else:
            progname = args[0]
            sys.path.insert(0, os.path.dirname(progname))
            with io.open_code(progname) as fp:
                code = compile(fp.read(), progname, 'exec')
            spec = importlib.machinery.ModuleSpec(name='__main__', loader=None,
                                                  origin=progname)
            globs = {
                '__spec__': spec,
                '__file__': spec.origin,
                '__name__': spec.name,
                '__package__': None,
                '__cached__': None,
            }
        try:
            runctx(code, globs, None, options.outfile, options.sort)
        except BrokenPipeError as exc:
            # Prevent "Exception ignored" during interpreter shutdown.
            sys.stdout = None
            sys.exit(exc.errno)
    else:
        parser.print_usage()
    return parser

# When invoked as main program, invoke the profiler on a script
if __name__ == '__main__':
    main()

Directory Contents

Dirs: 34 × Files: 154

Name Size Perms Modified Actions
asyncio DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
- drwxr-xr-x 2026-02-10 08:09:23
Edit Download
ctypes DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
curses DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
dbm DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
email DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
encodings DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
ensurepip DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
html DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
http DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
importlib DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
json DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
logging DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
pathlib DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
re DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
sqlite3 DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
sysconfig DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
tomllib DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
unittest DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
urllib DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
venv DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
wsgiref DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
xml DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
xmlrpc DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
zipfile DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
zoneinfo DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
_pyrepl DIR
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
- drwxr-xr-x 2026-02-10 08:06:26
Edit Download
6.38 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
500 B lrw-r--r-- 2026-01-10 10:38:56
Edit Download
99.28 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
63.81 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
21.54 KB lrwxr-xr-x 2026-01-10 10:38:56
Edit Download
35.25 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
3.34 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
11.69 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
25.47 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
14.96 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
12.86 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
36.11 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
5.69 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
3.97 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
20.18 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
52.57 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
27.15 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
129 B lrw-r--r-- 2026-01-10 10:39:00
Edit Download
8.76 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
7.44 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
6.48 KB lrwxr-xr-x 2026-01-10 10:38:55
Edit Download
18.73 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
63.03 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
268 B lrw-r--r-- 2026-01-10 10:39:01
Edit Download
2.73 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
81.41 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
40.00 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
106.85 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
83.59 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
10.40 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
15.35 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
6.04 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
39.15 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
33.92 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
38.15 KB lrw-r--r-- 2026-01-10 10:39:01
Edit Download
6.10 KB lrw-r--r-- 2026-01-10 10:39:01
Edit Download
7.31 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
6.09 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
21.03 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
19.44 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
9.42 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
24.06 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
9.22 KB lrw-r--r-- 2026-01-10 10:39:01
Edit Download
22.48 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
7.54 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
53.07 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
125.63 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
3.50 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
79.74 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
1.05 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
13.49 KB lrw-r--r-- 2025-12-05 16:06:33
Edit Download
7.11 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
77.18 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
13.08 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
79.73 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
23.29 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
23.23 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
6.87 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
30.16 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
2.32 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
11.49 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
2.76 KB lrw-r--r-- 2026-01-10 10:39:01
Edit Download
10.72 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
58.95 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
40.65 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
89.84 KB lrwxr-xr-x 2026-01-10 10:38:56
Edit Download
65.39 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
91.85 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
17.85 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
46.25 KB lrwxr-xr-x 2026-01-10 10:38:56
Edit Download
29.33 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
14.26 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
17.81 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
23.59 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
22.61 KB lrwxr-xr-x 2026-01-10 10:38:56
Edit Download
28.61 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
5.99 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
11.13 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
107.58 KB lrwxr-xr-x 2026-01-10 10:38:56
Edit Download
7.65 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
13.14 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
7.03 KB lrwxr-xr-x 2026-01-10 10:39:00
Edit Download
36.14 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
7.88 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
7.73 KB lrw-r--r-- 2026-01-10 10:39:01
Edit Download
12.58 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
6.20 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
1.94 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
19.00 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
8.60 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
13.04 KB lrw-r--r-- 2026-01-10 10:39:01
Edit Download
56.12 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
2.44 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
24.96 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
42.90 KB lrwxr-xr-x 2026-01-10 10:38:55
Edit Download
36.87 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
27.41 KB lrw-r--r-- 2026-01-10 10:39:01
Edit Download
231 B lrw-r--r-- 2026-01-10 10:38:55
Edit Download
232 B lrw-r--r-- 2026-01-10 10:38:55
Edit Download
229 B lrw-r--r-- 2026-01-10 10:38:56
Edit Download
51.47 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
6.00 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
60.72 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
11.51 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
12.61 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
257 B lrw-r--r-- 2026-01-10 10:38:56
Edit Download
88.70 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
13.87 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
11.27 KB lrwxr-xr-x 2026-01-10 10:39:00
Edit Download
111.74 KB lrwxr-xr-x 2026-01-10 10:38:55
Edit Download
31.65 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
19.49 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
1003 B lrw-r--r-- 2026-01-10 10:38:56
Edit Download
54.05 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
13.16 KB lrwxr-xr-x 2026-01-10 10:38:55
Edit Download
2.43 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
21.06 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
29.03 KB lrwxr-xr-x 2026-01-10 10:38:55
Edit Download
65.00 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
17.62 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
1.99 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
10.94 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
130.14 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
28.77 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
26.44 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
22.71 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
21.01 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
23.73 KB lrwxr-xr-x 2026-01-10 10:39:00
Edit Download
8.42 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
32.12 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
3.93 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
6.90 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
2.20 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
31.85 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
3.00 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
8.53 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
5.55 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
2.61 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
14.31 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
9.05 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
21.51 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
89.83 KB lrw-r--r-- 2026-01-10 10:39:01
Edit Download
222.19 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
91.61 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
11.55 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
6.04 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
3.05 KB lrw-r--r-- 2026-01-10 10:38:56
Edit Download
33.92 KB lrw-r--r-- 2026-01-10 10:39:00
Edit Download
65.88 KB lrw-r--r-- 2026-01-10 10:39:50
Edit Download
65.90 KB lrw-r--r-- 2026-01-10 10:43:38
Edit Download
4.26 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
5.75 KB lrw-r--r-- 2026-01-10 10:38:55
Edit Download
5.10 KB lrw-r--r-- 2026-01-10 10:39:01
Edit Download
227 B lrw-r--r-- 2026-01-10 10:39:01
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).