Начать процесс в импортированном модуле - PullRequest
0 голосов
/ 12 декабря 2018

Этот вопрос уже задавался ashboy64 , но не получил ответа.

Так что, в основном, я хочу запустить процесс в импортированном, самописанном модуле.Модуль представляет собой отдельный класс с несколькими дополнительными функциями, которые использует класс.Класс «запускает» процесс для выполнения некоторой работы одновременно, которая, как сказано, не работает.

Python выплевывает текст, который говорит, что, поскольку я не использовал fork (я использую spawn (по умолчанию)), чтобы запустить свой процесс, я должен использовать __name__ == "__main__" "в основном модуле».Но это не мой основной модуль, так что я должен делать?

Впервые я использую multiprocesses и я во время чтения документов , чтобы найти ответЯ не понимаю, почему следующий код не будет работать.

from multiprocessing import Process

def foo():
    print('hello')

p = Process(target=foo)
p.start()

Это потому, что новый процесс выполняет весь код из основного модуля?Если это так, то почему это применимо в моем случае, в котором нет «непосредственно» исполняемого кода (нет кода, который находится за пределами класса или функции)?

Но в любом случае мой главный вопрос заключается в том, какчтобы запустить процесс в импортированном модуле.

Заранее спасибо!

РЕДАКТИРОВАТЬ

Я понял, как заставить его работать ...

Не знаю почему, но когда вы просто ставите точку избытка вашего main модуля в операторе if ...

if __name__ == __main__:
    main()

... это работает.

Не знаю почему, хотя, так как при этом отмечается, что начинается процесс, и мне не нужно помещать этот оператор if в мой импортированный модуль, который запускает процесс.

...