我的代码没有生成2个进程,我也不知道为什么。我正在使用来自多处理python库的Process。
import os
from multiprocessing import Process
def dummy():
while True:
print(os.getpid())
p1 = Process(target=dummy())
p2 = Process(target=dummy())
p1.start()
p2.start()
p1.join()
p2.join()
预期结果:创建了2个进程-在Windows 7任务管理器中可见,并且我的代码打印了2个不同的进程ID
实际结果: 仅运行一个python进程,仅输出一个进程ID。
3480
3480
3480
答案 0 :(得分:9)
您的代码没有按照您想的那样做。在这些行的第一行:
p1 = Process(target=dummy())
您正在调用 dummy()
函数。如果添加一些打印语句,将会看到您永远不会超出此行。因为调用dummy()
在 main 进程中启动了一个无限循环,而该循环只是永远打印主进程的pid。
执行此操作:
p1 = Process(target=dummy)
p2 = Process(target=dummy)
也就是说,不要调用 dummy
,只需传递函数对象即可。然后是后来的
p1.start()
(等)将在您想要的新过程中调用dummy()
。