Условно заменить функции в импортируемом модуле (переключатель CPU / GPU) - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть python модуль mylibrary.py, который напоминает следующее

from cpu_implementation import bigfunction

class Thing(object):
...
...
  def perform_computation(self, data):
    result = bigfunction(data)

В моем скрипте я вызываю from mylibrary import Thing и вызываю t = Thing(); t.perform_computation(data)

Однако, У меня есть альтернативная реализация bigfunction в другом файле, которая использует вместо этого графический процессор через PyCUDA.

Я хотел бы иметь возможность альтернативно использовать реализацию cpu или gpu и делать это через импорт, как from mylibrary import Thing <- CPU </p>

from mylibrary.cuda import Thing <- GPU </p>

Без не нужно переписывать mylibrary.py, в идеале получилось бы определение bigfunction изменилось. Я не видел способов или примеров для реализации этого. bigfunction должна быть функцией-заглушкой? Как его заменить реализацией CPU или GPU?

...