为什么我的代码没有生成两个进程?

Why is my code not spawning two processes?

我的代码没有生成 2 个进程,我不知道为什么。我正在使用 multiprocessing python 库中的进程。

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

您的代码没有按照您认为的方式执行。在这些行的第一行:

p1 = Process(target=dummy())

您正在调用 dummy() 函数。如果您添加一些打印语句,您会发现您永远不会超出这一行。因为调用 dummy() 会在 main 进程中启动一个无限循环,并且该循环只会永远打印主进程的 pid。

改为这样做:

p1 = Process(target=dummy)
p2 = Process(target=dummy)

即不调用dummy,只传递函数对象。然后后面的

p1.start()

(etc) 将在新进程中调用 dummy(),这正是您想要的。