【发布时间】:2023-02-06 03:14:13
【问题描述】:
我正在尝试一些多处理作为下面的示例代码,它应该打印来自01,02,03,hello world,04,05的消息,但它却去了01,02,01,05,03,hello world,04,05,为什么02回到01然后跳转到05,回到03,为什么我在这里错过了吗,如何让它按顺序运行,谢谢!
from multiprocessing import *
# large data/complex use multiprocessing , else use odinary function
q = Queue() # comm between parent n child proces
def f1(x,q):
print('03')
x = x + " world"
q.put(x)
def main_f():
print('01')
mp = Process(target=f1,args=("hello",q,))
if __name__ == '__main__': # only happen once, else ex 4 process to 16 to 64 endless
print('02')
mp.start()
print(q.get())
mp.join()
print('04')
main_f()
print('05')
我期待来自 01,02,03,hello world,04,05 的消息打印
【问题讨论】:
-
向我们展示您是如何运行这段代码的。
-
在像多处理这样的并发执行中不能保证输出的顺序。它可以随着每次运行而改变。如果希望输出按特定顺序,可以使用队列在进程之间传递消息,并确保进程按特定顺序执行。
-
@AhmedAEK 不完全是
标签: python multiprocessing queue program-entry-point