[Python-Dev] Investigating time for `import requests`
Nathaniel Smith
njs at pobox.com
Sun Oct 1 22:34:55 EDT 2017
On Sun, Oct 1, 2017 at 7:04 PM, INADA Naoki <songofacandy at gmail.com> wrote:
> 4. http.client
>
> import time: 1376 | 2448 | email.header
> ...
> import time: 1469 | 7791 | email.utils
> import time: 408 | 10646 | email._policybase
> import time: 939 | 12210 | email.feedparser
> import time: 322 | 12720 | email.parser
> ...
> import time: 599 | 1361 | email.message
> import time: 1162 | 16694 | http.client
>
> email.parser has very large import tree.
> But I don't know how to break the tree.
There is some work to get urllib3/requests to stop using http.client,
though it's not clear if/when it will actually happen:
https://github.com/shazow/urllib3/pull/1068
> Another major slowness comes from compiling regular expression.
> I think we can increase cache size of `re.compile` and use ondemand cached
> compiling (e.g. `re.match()`),
> instead of "compile at import time" in many modules.
In principle re.compile() itself could be made lazy -- return a
regular exception object that just holds the string, and then compiles
and caches it the first time it's used. Might be tricky to do in a
backwards compatibility way if it moves detection of invalid regexes
from compile time to use time, but it could be an opt-in flag.
-n
--
Nathaniel J. Smith -- https://vorpus.org
More information about the Python-Dev
mailing list