为什么我的代码没有生成两个进程?
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()
,这正是您想要的。
我的代码没有生成 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()
,这正是您想要的。