Unverified Kaydet (Commit) 700d2e47 authored tarafından Barry Warsaw's avatar Barry Warsaw Kaydeden (comit) GitHub

bpo-31415: Support PYTHONPROFILEIMPORTTIME envvar equivalent to -X importtime (#4240)

Support PYTHONPROFILEIMPORTTIME envvar equivalent to -X importtime
üst 9e339733
......@@ -411,7 +411,8 @@ Miscellaneous options
* ``-X importtime`` to show how long each import takes. It shows module name,
cumulative time (including nested imports) and self time (exluding nested
imports). Note that its output may be broken in multi threaded application.
Typical usage is ``python3 -X importtime -c 'import asyncio'``.
Typical usage is ``python3 -X importtime -c 'import asyncio'``. See also
:envvar:`PYTHONPROFILEIMPORTTIME`.
It also allows passing arbitrary values and retrieving them through the
:data:`sys._xoptions` dictionary.
......@@ -429,7 +430,7 @@ Miscellaneous options
The ``-X showalloccount`` option.
.. versionadded:: 3.7
The ``-X importtime`` option.
The ``-X importtime`` and :envvar:`PYTHONPROFILEIMPORTTIME` options.
Options you shouldn't use
......@@ -650,6 +651,15 @@ conflict.
.. versionadded:: 3.4
.. envvar:: PYTHONPROFILEIMPORTTIME
If this environment variable is set to a non-empty string, Python will
show how long each import takes. This is exactly equivalent to setting
``-X importtime`` on the command line.
.. versionadded:: 3.7
.. envvar:: PYTHONASYNCIODEBUG
If this environment variable is set to a non-empty string, enable the
......
......@@ -166,7 +166,8 @@ special method lookups. Patch by Stefan Behnel.
.. section: Core and Builtins
Add ``-X importtime`` option to show how long each import takes. It can be
used to optimize application's startup time.
used to optimize application's startup time. Support the
:envvar:`PYTHONPROFILEIMPORTTIME` as an equivalent way to enable this.
..
......
......@@ -1682,10 +1682,17 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals,
* _PyDict_GetItemId()
*/
if (ximporttime == 0) {
PyObject *xoptions = PySys_GetXOptions();
if (xoptions) {
PyObject *value = _PyDict_GetItemId(xoptions, &PyId_importtime);
ximporttime = (value == Py_True);
char *envoption = Py_GETENV("PYTHONPROFILEIMPORTTIME");
if (envoption != NULL && strlen(envoption) > 0) {
ximporttime = 1;
}
else {
PyObject *xoptions = PySys_GetXOptions();
if (xoptions) {
PyObject *value = _PyDict_GetItemId(
xoptions, &PyId_importtime);
ximporttime = (value == Py_True);
}
}
if (ximporttime) {
fputs("import time: self [us] | cumulative | imported package\n",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment