Comparación: declaración de importación vs función __import__

Como seguimiento de la pregunta.Usando incorporado__import__() en casos normalesLlevé algunas pruebas y encontré resultados sorprendentes.

Estoy aquí comparando el tiempo de ejecución de un clásicoimport declaración y una llamada a la__import__ función incorporada Para este propósito, uso el siguiente script en modo interactivo:

import timeit   

def test(module):    
    t1 = timeit.timeit("import {}".format(module))
    t2 = timeit.timeit("{0} = __import__('{0}')".format(module))
    print("import statement:   ", t1)
    print("__import__ function:", t2)
    print("t(statement) {} t(function)".format("<" if t1 < t2 else ">"))

Como en la pregunta vinculada, aquí está la comparación al importarsys, junto con algunos otros módulos estándar:

>>> test('sys')
import statement:    0.319865173171288
__import__ function: 0.38428380458522987
t(statement) < t(function)

>>> test('math')
import statement:    0.10262547545597034
__import__ function: 0.16307580163101054
t(statement) < t(function)

>>> test('os')
import statement:    0.10251490255312312
__import__ function: 0.16240755669640627
t(statement) < t(function)

>>> test('threading')
import statement:    0.11349136644972191
__import__ function: 0.1673617034957573
t(statement) < t(function)

Hasta aquí todo bien,import es más rápido que__import__(). Esto tiene sentido para mí, porque como escribí en la publicación vinculada, me parece lógico que elIMPORT_NAME la instrucción está optimizada en comparación conCALL_FUNCTION, cuando este último resulta en una llamada a__import__.

Pero cuando se trata de módulos menos estándar, los resultados se invierten:

>>> test('numpy')
import statement:    0.18907936340054476
__import__ function: 0.15840019037769792
t(statement) > t(function)

>>> test('tkinter')
import statement:    0.3798560809537861
__import__ function: 0.15899962771786136
t(statement) > t(function)

>>> test("pygame")
import statement:    0.6624641952621317
__import__ function: 0.16268579177259568
t(statement) > t(function)

¿Cuál es la razón detrás de esta diferencia en los tiempos de ejecución? ¿Cuál es la razón real por la cual elimport declaración es más rápida en módulos estándar? Por otro lado, ¿por qué es el__import__ funcionan más rápido con otros módulos?

Las pruebas conducen con Python 3.6

Respuestas a la pregunta(3)

Su respuesta a la pregunta