У меня есть класс Feed, который использует многопроцессорность для запуска захвата и обработки видео. Я хочу остановить захват, который происходит в цикле while, если _camera_running является ложным, но когда я вызываю метод stop_camera_running, он не действует, он завершает свое выполнение, но не влияет на _camera_running} ценность.

class Feed(multiprocessing.Process):
    def __init__(self):
        self._camera_running = True

    def stop_camera_running(self):
        self._camera_running = False

    def run(self):
        while self._camera_running:
            # Video camture...
            # Process frame...

Мой вопрос: я что-то упустил, чтобы разрешить вызов методов в запущенном процессе? Я также должен добавить, что stop_camera_method управляется через API, а фиды хранятся в списке, а затем запускаются после их добавления. API имеет доступ к этому списку процессов подачи.

1
Scott.M 1 Апр 2020 в 18:15

1 ответ

Теперь я не вижу ваш код, где вы use stop_camera_running

Вы можете сделать следующее. Предполагая, что это то место, где вы хотите это остановить

 def run(self):
    while self._camera_running:
        return stop_camera_running

Оператор return в функции завершает ее. Попробуйте.

0
Daniel Saggo 1 Апр 2020 в 19:15