Я учусь использовать пакет python Ray для параллельного выполнения моего кода. Я столкнулся с проблемой с классом, методы которого украшены @ ray.remote.
Я могу импортировать класс в той же папке и выполнить метод в учебный класс. Однако после импорта класса в другой каталог он вызывает ModuleNotFoundError
при вызове метода.
В соответствии с отслеживанием ошибки, похоже, проблема в десериализации процесс, когда программа не может найти требуемый модуль.
Ниже показан минимальный рабочий пример моей проблемы.
Structure of the directory.
folder/
main/
a_class.py
process_in_main.py
processing/
process_not_in_main.py
Содержимое трех скриптов
# a_class.py
import ray
class Foo:
@ray.remote
def single_function(self):
return None
def combined_function(self):
ray.init()
results_id = [Foo.single_function.remote(self) for i in range(5)]
results = ray.get(results_id)
ray.shutdown()
return None
# process_in_main.py, it works fine
import a_class
instance = a_class.Foo()
instance.combined_function()
# process_not_in_main.py
import sys
sys.path.append('../')
from main import a_class
instance = a_class.Foo()
instance.combined_function() # it will raise ModuleNotFoundError: No module named 'main'
Любая помощь будет оценена. Заранее спасибо.