[Python-Dev] Change PEP 399 import recommendation (original) (raw)

Stefan Behnel stefan_ml at behnel.de
Sat Oct 12 16:04:23 CEST 2013


Stefan Krah, 12.10.2013 15:41:

Nick Coghlan wrote:

On 12 Oct 2013 05:49, "Eric Snow" wrote:

On Fri, Oct 11, 2013 at 1:41 PM, Stefan Krah wrote:

Antoine Pitrou wrote:

Just create a pydecimal module (like pyio).

That's very fast indeed. There's one minor problem: For backwards compatibility and pickling [1] I'd need to add module = 'decimal' to every class of the Python version. Are there any reasons not to do that? Try just putting "name = 'decimal'" at the top of the source file. In this case the fixup needs to be conditional on the absence of "decimal". Aside from that, yes, lying about name is the easiest way to preserve pickle compatibility while still moving code around. Thanks Eric and Nick. The setup pretty much works (see issue #19232) and the import speedup is quite large. I wonder if Cpython's startup time could be reduced if this strategy was applied to other modules as well (see #19229). There are some concerns whether the change would impact other Python implementations, so I changed the subject (hoping for feedback).

FWIW, I think this definitely makes sense in cases where the C implementation is essentially a complete replacement of the original module, such as in this case. I even sometimes suggest compiling Python modules with Cython if the import time matters.

For "normal" accelerator modules that only replace a part of a Python module with a native implementation, this is less likely to make a large enough difference to make up for the additional complexity due to the code split.

Stefan



More information about the Python-Dev mailing list