`-X importtime=2`

This is expert-only tool. So no need for verbose name.

On Sat, Feb 11, 2023 at 10:01 PM Noah Kim <noahb...@gmail.com> wrote:
>
> 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
>
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at 
> https://mail.python.org/archives/list/python-ideas@python.org/message/GEISYQ5BXWGKT33RWF77EOSOMMMFUBUS/
> Code of Conduct: http://python.org/psf/codeofconduct/



-- 
Inada Naoki  <songofaca...@gmail.com>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/FO3FOBAQDOUROEHZRF3SZHNSKVW364CE/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to