Message339673
Raymond:
> In general, we don't do deferred imports unless there is a compelling reason (i.e. it is very slow or it is sometimes unavailable).
While I was working on adding OpenSSL 1.1.1 to Python 3.4, my _hashopenssl module was broken. In that case, "import random" fails with ImportError because of hashlib failures. I was surprised, since random doesn't need hashlib at startup.
I would like to be able to use "import random" even if hashlib is broken. For me, random is a key component, whereas I see hashlib more as optional. (Even if in practice, it should always be available).
Raymond:
> Otherwise, it is a false optimization.
Brett:
> Could you explain a bit more, Victor, about why you want to avoid importing hashlib and OpenSSL so much?
Well, OpenSSL is not a random tiny library. For example, loading it increases Python RSS of around 2.7 MiB.
Example with script x.py:
---
import os
os.system(f"grep ^VmRSS /proc/{os.getpid()}/status")
import random
os.system(f"grep ^VmRSS /proc/{os.getpid()}/status")
---
Output without the change on Fedora 29:
VmRSS: 7396 kB
VmRSS: 11796 kB # +4.4 MiB
With the change:
VmRSS: 7272 kB
VmRSS: 8988 kB # +1.7 MiB
Another example is that OpenSSL loads the libz.so dynamic library by dependency.
I would prefer to minimize Python footprint if possible. |
|
Date |
User |
Action |
Args |
2019-04-08 20:32:55 | vstinner | set | recipients:
+ vstinner, brett.cannon, rhettinger |
2019-04-08 20:32:55 | vstinner | set | messageid: <1554755575.35.0.834196672689.issue36559@roundup.psfhosted.org> |
2019-04-08 20:32:55 | vstinner | link | issue36559 messages |
2019-04-08 20:32:55 | vstinner | create | |
|