@@ -103,6 +103,15 @@ static struct _inittab *inittab_copy = NULL;
103103#define FIND_AND_LOAD (interp ) \
104104 (interp)->imports.find_and_load
105105
106+ #define _IMPORT_TIME_HEADER (interp ) \
107+ do { \
108+ if (FIND_AND_LOAD((interp)).header) { \
109+ fputs("import time: self [us] | cumulative | imported package\n", \
110+ stderr); \
111+ FIND_AND_LOAD((interp)).header = 0; \
112+ } \
113+ } while (0)
114+
106115
107116/*******************/
108117/* the import lock */
@@ -262,13 +271,14 @@ import_ensure_initialized(PyInterpreterState *interp, PyObject *mod, PyObject *n
262271 Py_DECREF (value );
263272
264273done :
265- /* When -Ximporttime =2, print an import time entry even if an
266- * imported module has already been loaded.
274+ /* When -X importtime =2, print an import time entry even if an
275+ imported module has already been loaded.
267276 */
268- if (_PyInterpreterState_GetConfig (interp )-> import_time >= 2 ) {
277+ if (_PyInterpreterState_GetConfig (interp )-> import_time == 2 ) {
278+ _IMPORT_TIME_HEADER (interp );
269279#define import_level FIND_AND_LOAD(interp).import_level
270280 fprintf (stderr , "import time: cached | cached | %*s\n" ,
271- import_level * 2 , PyUnicode_AsUTF8 (name ));
281+ import_level * 2 , PyUnicode_AsUTF8 (name ));
272282#undef import_level
273283 }
274284
@@ -3702,13 +3712,7 @@ import_find_and_load(PyThreadState *tstate, PyObject *abs_name)
37023712 * _PyDict_GetItemIdWithError().
37033713 */
37043714 if (import_time ) {
3705- #define header FIND_AND_LOAD(interp).header
3706- if (header ) {
3707- fputs ("import time: self [us] | cumulative | imported package\n" ,
3708- stderr );
3709- header = 0 ;
3710- }
3711- #undef header
3715+ _IMPORT_TIME_HEADER (interp );
37123716
37133717 import_level ++ ;
37143718 // ignore error: don't block import if reading the clock fails
0 commit comments