Імпорти Python у внутрішньому циклі в 3 рази повільніші за імпорти на рівні файлу
Цей скрипт-бенчмарк тестує імпорти у внутрішньому циклі замість зовнішніх імпортів. Результати показують, що імпорти у внутрішньому циклі приблизно в 3 рази повільніші за імпорти на рівні файлу.
import_benchmark.py
import time
import sys
def benchmark_import_outside():
"""Бенчмарк імпортування модуля math поза циклом."""
import math # Імпортувати один раз поза циклом
start = time.time()
for _ in range(1_000_000):
x = math.sqrt(100) # Використати імпортований модуль
end = time.time()
return end - start
def benchmark_import_inside():
"""Бенчмарк імпортування модуля math усередині циклу."""
start = time.time()
for _ in range(1_000_000):
import math # Імпорт усередині циклу (погана практика)
x = math.sqrt(100)
end = time.time()
return end - start
def clear_math_from_cache():
"""Очистити модуль math із sys.modules для примусового перезавантаження."""
if 'math' in sys.modules:
del sys.modules['math']
def main():
# Переконатися, що math не кешується перед бенчмарком
clear_math_from_cache()
# Бенчмарк зовнішнього імпорту
time_outside = benchmark_import_outside()
print(f"Час (імпорт поза циклом): {time_outside:.4f} сек")
# Очистити math з кешу для чесного порівняння
clear_math_from_cache()
# Бенчмарк внутрішнього імпорту
time_inside = benchmark_import_inside()
print(f"Час (імпорт усередині циклу): {time_inside:.4f} сек")
# Обчислити та вивести різницю у продуктивності
ratio = time_inside / time_outside
print(f"Імпорт усередині циклу у {ratio:.0f}x повільніший за імпорт поза циклом.")
if __name__ == "__main__":
main()Результати
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.на Core i7-6700, з Python 3.12.3 на
Дивіться схожі статті за категоріями:
Python
Якщо ця стаття допомогла вам, будь ласка, подумайте про те, щоб купити мені каву або зробити пожертву через PayPal на підтримку досліджень та публікації нових статей на TechOverflow