Этот вопрос уже задавался 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
в мой импортированный модуль, который запускает процесс.