On Fri, 23 Jun 2017 23:03:57 +0000
Brett Cannon <br...@python.org> wrote:
> On Fri, 23 Jun 2017 at 12:17 Bhavishya <bhavishyagop...@gmail.com> wrote:
> 
> > As suggested, I'd like to discuss if lazy-loading is an option for
> > improving python-startup time.And if could be done inside the scope of a
> > GSoc project.
> >  
> 
> It's a possibility and it could be done in the scope of a GSoC project
> easily. Basically what would be needed is an importlib.util.lazy_import()
> function which does mostly what is outlined in
> https://docs.python.org/3/library/importlib.html#approximating-importlib-import-module
> but
> where the proper lazy loader is set on the spec object as an extra step.
> Then every module that is used during startup would use
> importlib.util.lazy_import() for importing instead of the normal import
> statement.

My experience is that:
- you want lazy imports to be implicit, i.e. they should work using the
  "import" statement and not any special syntax or function invocation
- you want a blacklist and/or whitelist mechanism to restrict lazy
  imports to a particular set of modules and packages, because some
  modules may not play well with lazy importing (e.g. anything that
  registers plugins, specializations -- think singledispatch --, etc.)

For example, I may want to register the "tornado", "asyncio" and "numpy"
namespaces / packages for lazy importing, but not the "numba" namespace
as it uses registration mechanisms quite heavily.

(and the stdlib could be part of the default lazy import whitelist)

Regards

Antoine.


_______________________________________________
Speed mailing list
Speed@python.org
https://mail.python.org/mailman/listinfo/speed

Reply via email to