Les imports Python à l'intérieur d'une boucle sont 3 fois plus lents que les imports au niveau du fichier
Ce script de benchmark teste les imports à l’intérieur d’une boucle par opposition aux imports externes. Les résultats montrent que les imports à l’intérieur d’une boucle sont environ 3 fois plus lents que les imports au niveau du fichier.
import_benchmark.py
import time
import sys
def benchmark_import_outside():
"""Benchmark : importer le module math en dehors de la boucle."""
import math # Importer une fois en dehors de la boucle
start = time.time()
for _ in range(1_000_000):
x = math.sqrt(100) # Utiliser le module importé
end = time.time()
return end - start
def benchmark_import_inside():
"""Benchmark : importer le module math à l'intérieur de la boucle."""
start = time.time()
for _ in range(1_000_000):
import math # Importer à l'intérieur de la boucle (mauvaise pratique)
x = math.sqrt(100)
end = time.time()
return end - start
def clear_math_from_cache():
"""Vider le module math de sys.modules pour forcer le rechargement."""
if 'math' in sys.modules:
del sys.modules['math']
def main():
# S'assurer que math n'est pas en cache avant le benchmark
clear_math_from_cache()
# Benchmark import externe
time_outside = benchmark_import_outside()
print(f"Temps (import hors boucle) : {time_outside:.4f} sec")
# Vider math du cache pour une comparaison équitable
clear_math_from_cache()
# Benchmark import interne
time_inside = benchmark_import_inside()
print(f"Temps (import dans la boucle) : {time_inside:.4f} sec")
# Calculer et afficher la différence de performance
ratio = time_inside / time_outside
print(f"L'import dans la boucle est {ratio:.0f}x plus lent que l'import externe.")
if __name__ == "__main__":
main()Résultats
benchmark_output.txt
Time (import outside loop): 0.0786 sec
Time (import inside loop): 0.2162 sec
Import inside loop is 3x slower than importing outside.sur Core i7-6700, avec Python 3.12.3 sur
Check out similar posts by category:
Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow