Aqui está um código para demonstrar minha pergunta:
from multiprocessing import Process
def worker():
print("Worker running")
if __name__ == "__main__":
p = Process(target=worker)
p.start()
input("1...")
input("2...")
p.join()
Observação: executado em Python 3.13, Windows x64.
E a saída que obtive foi (após inserir Enter
duas vezes):
1...
2...
Worker running
Process finished with exit code 0
A partir da saída, podemos ver que o processo foi inicializado e começou a ser executado após a segunda entrada. Eu pensei start()
que deveria bloquear e garantir que o processo filho fosse totalmente inicializado.
Esse é um comportamento normal do multiprocessamento do Python?
Porque se Threading for usado aqui, esse problema raramente ocorre. Eu sempre executo a thread antes da linha input("1...")
.
Posso perguntar se Process.start()
isso não garante que o processo seja totalmente iniciado, como devemos codificar para garantir que o processo filho esteja realmente em execução antes de prosseguir no processo pai?