[Python-ideas] Move optional data out of pyc files

Serhiy Storchaka storchaka at gmail.com
Thu Apr 12 06:14:23 EDT 2018


10.04.18 20:38, Chris Angelico пише:
> On Wed, Apr 11, 2018 at 2:14 AM, Serhiy Storchaka <storchaka at gmail.com> wrote:
> A deployed Python distribution generally has .pyc files for all of the
> standard library. I don't think people want to lose the ability to
> call help(), and unless I'm misunderstanding, that requires
> docstrings. So this will mean twice as many files and twice as many
> file-open calls to import from the standard library. What will be the
> impact on startup time?

Yes, this will mean more syscalls when import with docstrings. But the 
startup time doesn't matter for interactive shell in which you call 
help(). It was expected that programs which need to gain the benefit 
from separating optional components will run without loading them (like 
with option -OO).

The overhead can be reduced by packing multiple files in a single archive.

Finally, loading docstrings and other optional components can be made 
lazy. This was not in my original idea, and this will significantly 
complicate the implementation, but in principle it is possible. This 
will require larger changes in the marshal format and bytecode. This can 
open a door for further enhancements: loading the code and building 
classes and other complex data (especially heavy namedtuples, enums and 
dataclasses) on demand. Often you need to use just a single attribute or 
function from a large module. But this is different change, out of scope 
of this topic.



More information about the Python-ideas mailing list