#python #performance #numpy #module #python-import
#python #Производительность #numpy #модуль #python-импорт
Вопрос:
У нас есть набор тестов, который выполняет сотни скриптов Python. После оптимизации нашего собственного кода мы обнаружили, что большая часть времени тестирования теперь тратится на загрузку numpy и matplotlib. Давайте сосредоточимся здесь на numpy.
time python3 -c 'import numpy'
дает мне 360 мс.
Команда
python3 -X importtime -c 'import numpy'
показывает, что значительная часть этого времени тратится на загрузку подмодулей numpy.fft
, numpy.polynomial
, numpy.random
, которые нам не нужны. Может быть, нам даже не нужно numpy.lib
. Как предотвратить загрузку этих подмодулей?
Наша наивная попытка
python3 -X importtime 'from numpy import core'
улучшения не приносит; модули, отличные core
от перечисленных, по-прежнему перечислены, а время загрузки практически не изменилось.
Комментарии:
1. Если вы изучите файлы инициализации в github, вы обнаружите, что импорт действительно многочисленный. Если вы не сможете сузить те части, которые вам действительно нужны, вам может не повезти… смотрите github.com/numpy/numpy/blob/master/numpy/core/__init__.py как вы использовали в своем примере
2. Интересная проблема, может быть, просто украсть исходный код, который вам нужен, напрямую из numpy, а не пытаться импортировать его, если производительность так важна?
3. рассматривали ли вы возможность запуска сценариев из общего интерпретатора?