下面是演示我的问题的代码:
from multiprocessing import Process
def worker():
print("Worker running")
if __name__ == "__main__":
p = Process(target=worker)
p.start()
input("1...")
input("2...")
p.join()
注意,在 Python 3.13、Windows x64 上运行。
我得到的输出是(输入Enter
两次后):
1...
2...
Worker running
Process finished with exit code 0
从输出中,我们可以看到该进程实际上在第二次输入后就已初始化并开始运行。我原本以为start()
应该阻塞并保证子进程完全初始化。
这是 Python 多处理的正常行为吗?
因为如果在这里使用线程,这个问题很少发生。我总是让线程在 行之前运行input("1...")
。
请问,如果Process.start()
不能保证进程完全启动,我们应该如何编写代码来确保子进程在父进程中继续运行之前确实正在运行?