mirror of
https://github.com/python/cpython.git
synced 2024-11-27 03:45:08 +08:00
bpo-31415: Support PYTHONPROFILEIMPORTTIME envvar equivalent to -X importtime (#4240)
Support PYTHONPROFILEIMPORTTIME envvar equivalent to -X importtime
This commit is contained in:
parent
9e33973332
commit
700d2e4755
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user