
All, I'm writing to propose an adjacent interpreter flag to `-X importtime`: `-X importcache` (open to alternative naming). While `-X importtime` is incredibly useful for analyzing module import times, by design, it doesn't log anything if an imported module has already been loaded. `-X importcache` would provide additional output for every module that's already been loaded: ```
import uuid import time: cached | cached | _io import time: cached | cached | _io import time: cached | cached | os import time: cached | cached | sys import time: cached | cached | enum import time: cached | cached | _io import time: cached | cached | _io import time: cached | cached | collections import time: cached | cached | os import time: cached | cached | re import time: cached | cached | sys import time: cached | cached | functools import time: cached | cached | itertools import time: 151 | 151 | _wmi import time: 18290 | 18440 | platform import time: 372 | 372 | _uuid import time: 10955 | 29766 | uuid
In codebases with convoluted/poorly managed import graphs (and
consequently, workloads that suffer from long import times), the ability to
record all paths to an expensive dependency--not just the
first-imported--can help expedite refactoring (and help scale
identification of this type of issue). More generally, this flag would
provide a more efficient path to tracking runtime dependencies.
As a proof of concept, I was able to hack this functionality into `-X
importtime` by adding a couple lines to `import_ensure_initialized` in
`Python/import.c` (hence the output above). A separate flag is probably
desirable to preserve backwards compatibility.
Looking forward to your feedback,
Noah