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