Python 为什么不';我不能同时执行吗?

Python 为什么不';我不能同时执行吗?,python,python-3.x,python-multiprocessing,Python,Python 3.x,Python Multiprocessing,考虑以下最小程序: #!/usr/bin/env python3 import time from multiprocessing import Process def mp_test(): time.sleep(3) print('mp_test') print('start') p = Process(target=mp_test) p.run() print('end') 根据我对的理解,此代码应该在单独的进程中执行mp_test(),这意味着它应该与主进程并行执行

考虑以下最小程序:

#!/usr/bin/env python3

import time
from multiprocessing import Process

def mp_test():
    time.sleep(3)
    print('mp_test')

print('start')
p = Process(target=mp_test)
p.run()
print('end')
根据我对的理解,此代码应该在单独的进程中执行
mp_test()
,这意味着它应该与主进程并行执行。因此,我期望得到以下结果:

start
end
mp_test
然而,我得到的实际输出是:

start
mp_test
end

为什么会这样?我需要做哪些更改才能得到我期望的结果?

根据文档,尝试
p.start()
而不是
p.run()

在多处理中,通过创建流程对象,然后调用其start()方法生成流程

因此,您似乎应该调用
p.start()
,这将在一个单独的线程中调用
p.run()
,这将给出您想要的结果


调用
p.run()。不知怎的,我没能从文档中收集到。等等。您不需要同时使用p.start()和p.run(),是吗?我想,只要开始。此外,由于它将在不同的进程中运行,因此您可能看不到输出。如果要作为线程运行,则multiprocessing.dummy import Process中的
将作为单独的线程运行。然后您应该看到输出,因为它应该共享相同的标准输出。