Я работаю над кодом, который получает данные с веб-сайта и затем преобразует их в объект данных, который будет работать с любой библиотекой машинного обучения, которую использует пользователь. Я также хотел выполнить некоторую предварительную обработку этих данных, чтобы с ними было проще работать, но многие инструменты предварительной обработки в некотором роде зависят от библиотеки, и я не хочу, чтобы пользователю приходилось загружать библиотеку, которой он не использует. собираюсь использовать, поэтому я не хочу просто пытаться импортировать все библиотеки, которые я пытаюсь поддерживать, вверху. Например, если пользователь использует scikit-learn, ему не обязательно устанавливать Pytorch. Мне было интересно, могу ли я вместо этого поместить эти операторы импорта в оператор if, который выполняет предварительную обработку с помощью инструментов конкретной библиотеки. Код будет выглядеть примерно так:
Код: Выделить всё
class ML_Library(Enum):
SKLEARN == 1
PYTORCH == 2
def DataReturningFunction(Library):
# some code that gets the raw data from the website
if Library == ML_Library.SKLEARN:
import sklearn
# some code that does data preprocessing with sklearn tools
return (DataObject that works with Scikit-Learn)
if Library == ML_Library.PYTORCH:
import pytorch
# some code that does data preprocessing with pytorch tools
return (DataObject that works with Pytorch)
Я тестировал это с библиотеками, которые у меня не установлены, и кажется, что все работает нормально, если поток управления не идет по пути его импорта, но я чувствую, что есть некоторые основная проблема с производительностью при таком подходе, о которой я не знаю
Подробнее здесь:
https://stackoverflow.com/questions/786 ... -in-python