Personally,

I am -1 on the name - I think '-X importtrace' or similar would be better I think.

I am +100 on the functionality - Unless you put in log messages, tracking imports is complex - so something like this I can see being very useful.

I know I don't make the decisions, but it seems if this really is only a couple of lines, and all the test cases pass this (or something very similar) should be a considered for 3.12.

Thank you Noah,


------ Original Message ------
From: "Noah Kim" <noahb...@gmail.com>
To: python-ideas@python.org
Sent: Saturday, 11 Feb, 23 At 00:07
Subject: [Python-ideas] Proposal: -X importcache to supplement -X importtime for loaded modules

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/ <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/ <https://mail.python.org/archives/list/python-ideas@python.org/message/GEISYQ5BXWGKT33RWF77EOSOMMMFUBUS/> Code of Conduct: http://python.org/psf/codeofconduct/ <http://python.org/psf/codeofconduct/>
_______________________________________________
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/ENFJY2RP73IYPUSRVGHBPNELS5JVQLAA/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to