projects
/
python_utils.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
74af462
)
Add --run_profiler option.
author
Scott
<
[email protected]
>
Thu, 27 Jan 2022 18:34:30 +0000
(10:34 -0800)
committer
Scott
<
[email protected]
>
Thu, 27 Jan 2022 18:34:30 +0000
(10:34 -0800)
bootstrap.py
patch
|
blob
|
history
diff --git
a/bootstrap.py
b/bootstrap.py
index 44a16fbd3b3f99a20e47913f0428314b1cf5bcc8..1b4d4843332effc7683bcbd20a7f9a1432cc299e 100644
(file)
--- a/
bootstrap.py
+++ b/
bootstrap.py
@@
-51,7
+51,12
@@
args.add_argument(
default=False,
help='Should we audit all import events?',
)
default=False,
help='Should we audit all import events?',
)
-
+args.add_argument(
+ '--run_profiler',
+ action=ActionNoYes,
+ default=False,
+ help='Should we run cProfile on this code?',
+)
original_hook = sys.excepthook
original_hook = sys.excepthook
@@
-143,18
+148,6
@@
class ImportInterceptor(object):
return []
return []
-# # TODO: test this with python 3.8+
-# def audit_import_events(event, args):
-# if event == 'import':
-# module = args[0]
-# filename = args[1]
-# sys_path = args[2]
-# sys_meta_path = args[3]
-# sys_path_hooks = args[4]
-# logger.debug(msg)
-# print(msg)
-
-
# Audit import events? Note: this runs early in the lifetime of the
# process (assuming that import bootstrap happens early); config has
# (probably) not yet been loaded or parsed the commandline. Also,
# Audit import events? Note: this runs early in the lifetime of the
# process (assuming that import bootstrap happens early); config has
# (probably) not yet been loaded or parsed the commandline. Also,
@@
-168,12
+161,6
@@
for arg in sys.argv:
if arg == '--audit_import_events':
import_interceptor = ImportInterceptor()
sys.meta_path = [import_interceptor] + sys.meta_path
if arg == '--audit_import_events':
import_interceptor = ImportInterceptor()
sys.meta_path = [import_interceptor] + sys.meta_path
- # if not hasattr(sys, 'frozen'):
- # if (
- # sys.version_info[0] == 3
- # and sys.version_info[1] >= 8
- # ):
- # sys.addaudithook(audit_import_events)
def dump_all_objects() -> None:
def dump_all_objects() -> None:
@@
-260,8
+247,22
@@
def initialize(entry_point):
ret = None
import stopwatch
ret = None
import stopwatch
- with stopwatch.Timer() as t:
- ret = entry_point(*args, **kwargs)
+ if config.config['run_profiler']:
+ import cProfile
+ from pstats import SortKey
+
+ with stopwatch.Timer() as t:
+ cProfile.runctx(
+ "ret = entry_point(*args, **kwargs)",
+ globals(),
+ locals(),
+ None,
+ SortKey.CUMULATIVE,
+ )
+ else:
+ with stopwatch.Timer() as t:
+ ret = entry_point(*args, **kwargs)
+
logger.debug(f'{entry_point.__name__} (program entry point) returned {ret}.')
if config.config['dump_all_objects']:
logger.debug(f'{entry_point.__name__} (program entry point) returned {ret}.')
if config.config['dump_all_objects']: