Importar módulos de python en el fondo en REPL

Algunos módulos de Python, notablemente matplotlib , tardan mucho tiempo en cargarse

 start = datetime.datetime.now(); import numpy, pandas, matplotlib, sklearn; datetime.datetime.now() - start 

tarda medio segundo con archivos en caché y varios segundos para archivos sin caché . ¿Hay alguna forma de cargar estos módulos en segundo plano, cuando se encuentra en el intérprete de Python?

Puede importar módulos en hilos separados. Aquí está la solución.

Crea un archivo load_modules.py :

 from concurrent.futures import ThreadPoolExecutor import importlib import sys modules_to_load = ['numpy', 'pandas', 'matplotlib'] def do_import(module_name): thismodule = sys.modules[__name__] module = importlib.import_module(module_name) setattr(thismodule, module_name, module) print(module_name, 'imported') executor = ThreadPoolExecutor() for module_name in modules_to_load: executor.submit(do_import, module_name) 

Luego puede iniciar el intérprete con un comando:

 python -ic "exec(open(\"load_modules.py\").read(), globals())" 

O simplemente correr

 exec(open("load_modules.py").read(), globals()) 

en su intérprete para cargar módulos.