[Python-Dev] this is what happens if you freeze all the modules required for startup

Terry Reedy tjreedy at udel.edu
Wed Apr 16 20:56:35 CEST 2014


On 4/16/2014 12:25 PM, "Martin v. Löwis" wrote:
> Am 14.04.14 23:51, schrieb Brett Cannon:
>> It was realized during PyCon that since we are freezing importlib we
>> could now consider freezing all the modules to cut out having to stat or
>> read them from disk.
> [...]
>> Thoughts?
>
> They still get read from disk, except that it is the operating system
> that does the reading. So what you really save is the access to many
> tiny files; something that can also be achieved with the zipfile import.
> So I wonder how your all-frozen binary compares to a standard binary
> with a python35.zip.
>
> If it is comparable, I'd rather extend on that route, i.e. promote
> putting the standard library into a zip file in the default
> installation, and also find a way where (say) /usr/bin/hg could
> conveniently specify a zip file that will contain the Mercurial
> byte code. For example, we could support a -Z option for the interpreter
> which would allow to append a zip file to a script that gets put on
> sys.path.

This could be useful for Idle also, as its startup is noticeably 
sluggish and could definitely stand to be zippier. About 50 Idle modules 
are imported in the user process and, I presume, at least as many in the 
Idle process.

PS. In the user process sys.modules, there are numerous null entries 
like these:
 >>> sys.modules['idlelib.os']
 >>> sys.modules['idlelib.tokenize']
 >>> sys.modules['idlelib.io']
 >>> <etcetera>

Does anyone know the most likely reason?

-- 
Terry Jan Reedy




More information about the Python-Dev mailing list