Как передать объект процессу, созданному с помощью Multiprocess.ProcessPython

Программы на Python
Ответить
Anonymous
 Как передать объект процессу, созданному с помощью Multiprocess.Process

Сообщение Anonymous »

У меня есть служба обработки изображений, содержащая два метода, которые я хочу выполнить параллельно, используя библиотеку многопроцессорной обработки Python.
Первый метод выполняет вызов API, чтобы получить метаданные изображения из внешней службы.
Второй метод использует объект класса, который выполняет определенные сложные операции, такие как чтение изображения с использованием библиотеки opencv, а также выполнение действий по классификации изображений с использованием модель sklearn
Первая функция выглядит так (как показано ниже) -->

Код: Выделить всё

def function_1():
##perform long running api call
и это моя вторая функция -->

Код: Выделить всё

def function_2(image_proc_obj):
predictions = image_proc_obj.predict()

При вызове этих двух методов с использованием multiprocessing.Process, как показано ниже

Код: Выделить всё

image_proc_obj = ImageProcessingClass()
p1 = multiprocessing.Process(target=function_1)
p2 = multiprocessing.Process(target=function_2, args=(image_proc_obj,))

Я получаю сообщение ValueError: объекты ctypes, содержащие указатели, невозможно выбрать
I я передаю image_proc_obj во второй функции, потому что вызов конструктора этого класса загружает файл модели, а я не хочу, чтобы это происходило при каждом вызове функции.
Я также пытался создать класс таким образом, создав подкласс multiprocess.Process

Код: Выделить всё

class ImageClassifier(multiprocess.Process):
def __init__(self, process_obj):
super(ImageClassifier,self).__init__()
self.proc_obj = process_obj

def run(self, image):
predictions = self.proc_obj.predict(image)

Но при выполнении команд, как показано ниже:

Код: Выделить всё

image_proc_obj = ImageProcessingClass()
classifier = ImageClassifier(name="classifier process", process_obj=image_proc_obj)
classifier.start()
classifier.join()
Я получаю ту же ошибку --> ValueError: невозможно выбрать объекты ctypes, содержащие указатели
Жду помощи в этом вопросе

Подробнее здесь: https://stackoverflow.com/questions/706 ... ss-process
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»