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

时间:2019-09-06 16:44:37

标签: 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()

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

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

3480
3480
3480

1 个答案:

答案 0 :(得分:9)

您的代码没有按照您想的那样做。在这些行的第一行:

p1 = Process(target=dummy())

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

执行此操作:

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

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

p1.start()

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