multiprocessing: assert self._popen равно None, 'невозможно запустить процесс дважды' - PullRequest
0 голосов
/ 06 августа 2020

Мне нужно несколько экземпляров приложения для работы под управлением контроллера. Вот простой многопроцессорный каркас, который я использую:

bash-4.4$ cat controller.py
import os, sys
from worker import worker

if __name__ == '__main__':
        instances = 4

        for n in range(instances):
                        wkr_instance = worker(n)
                        wkr_instance.connect()
                        wkr_instance.start()
bash-4.4$ cat worker.py
import os
from multiprocessing import Process


class worker(Process):

        def __init__(self, n):
                self.name = "worker#" + str(n)
                print(self.name)
                super().__init__
        def connect(self):
                print("connected")

        def run(self):
                print("Running")
                while true:
                        pass

Когда я запустил его, я получил следующие ошибки при первом вызове run ():

bash-4.4$ python3 controller.py
worker#0
connected
Traceback (most recent call last):
  File "controller.py", line 10, in <module>
    wkr_instance.start()
  File "/usr/lib64/python3.6/multiprocessing/process.py", line 99, in start
    assert self._popen is None, 'cannot start a process twice'
AttributeError: 'worker' object has no attribute '_popen'
bash-4.4$

Похоже, начало () еще не запускался впервые. Почему он жалуется, что «не может запустить процесс дважды»?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...