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

Woj*_*Zet 3 python python-3.x python-multiprocessing

我的代码没有产生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()
Run Code Online (Sandbox Code Playgroud)

预期结果:创建了2个进程-在Windows 7任务管理器中可见,并且我的代码打印了2个不同的进程ID

实际结果:仅运行一个python进程,仅输出一个进程ID。

3480
3480
3480
Run Code Online (Sandbox Code Playgroud)

Tim*_*ers 9

您的代码没有按照您认为的去做。在这些行的第一行:

p1 = Process(target=dummy())
Run Code Online (Sandbox Code Playgroud)

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

改为这样做:

p1 = Process(target=dummy)
p2 = Process(target=dummy)
Run Code Online (Sandbox Code Playgroud)

也就是说,不要调用 dummy,只需传递函数对象即可。然后以后

p1.start()
Run Code Online (Sandbox Code Playgroud)

(等)将dummy()在您想要的新过程中调用。