[Python-Dev] Python startup time
Victor Stinner
victor.stinner at gmail.com
Thu Jul 20 04:56:43 EDT 2017
Hi,
I applied the patch above to count the number of times that Python is
run. Running the Python test suite with "./python -m test -j0 -rW"
runs Python 2,256 times.
Honestly, I expected more. I'm running tests with Python compiled in
debug mode. And in debug mode, Python startup time is much worse:
haypo at selma$ python3 -m perf command --inherit=PYTHONPATH -v -- ./python -c pass
command: Mean +- std dev: 46.4 ms +- 2.3 ms
FYI I'm using gcc -O0 rather than -Og to make compilation even faster.
Victor
diff --git a/Lib/site.py b/Lib/site.py
index 7dc1b04..4b0c167 100644
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -540,6 +540,21 @@ def execusercustomize():
(err.__class__.__name__, err))
+def run_counter():
+ import fcntl
+
+ fd = os.open("/home/haypo/prog/python/master/run_counter",
+ os.O_WRONLY | os.O_CREAT | os.O_APPEND)
+ try:
+ fcntl.flock(fd, fcntl.LOCK_EX)
+ try:
+ os.write(fd, b'\x01')
+ finally:
+ fcntl.flock(fd, fcntl.LOCK_UN)
+ finally:
+ os.close(fd)
+
+
def main():
"""Add standard site-specific directories to the module search path.
@@ -568,6 +583,7 @@ def main():
execsitecustomize()
if ENABLE_USER_SITE:
execusercustomize()
+ run_counter()
# Prevent extending of sys.path when python was started with -S and
# site is imported later.
More information about the Python-Dev
mailing list