[Python-Dev] Python startup time (original) (raw)

Nick Coghlan ncoghlan at gmail.com
Thu Jul 20 10:02:09 EDT 2017


On 20 July 2017 at 23:32, Stefan Behnel <stefan_ml at behnel.de> wrote:

So, before considering to write an accelerator module in C that replaces some existing Python module, and thus duplicating its entire source code with highly increased complexity, I'd like to remind you that simply compiling the Python module itself to C should give at least reasonable speed-ups without adding to the maintenance burden, and can be done optionally as part of the build process. We do that for Cython itself during its installation, for example.

And if folks are concerned about the potential bootstrapping issues with this approach, the gist is that it would have to look something like this:

Phase 0: freeze importlib

Phase 1: traditional CPython

Phase 2: accelerated CPython

Technically, phase 2 doesn't actually change CPython itself, since the import system is already setup such that if an extension module and a source module are side-by-side in the same directory, then the extension module will take precedence. As a result, precompiling with Cython is similar in many ways to precompiling to bytecode, its just that the result is native machine code with Python C API calls, rather than CPython bytecode.

Cheers, Nick.

-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia



More information about the Python-Dev mailing list