Python 多处理调用对象方法

Python Multiprocessing calling object method

我想使用 Python 的多处理模块来启动一个新进程,该进程创建一些其他对象并调用该对象的 loops_forever 方法。

在我的主要 class 我有:

import OtherService
from multiprocessing import Process
my_other_service = OtherService(address=ADDRESS)
my_other_process = Process(target=my_other_service.loops_forever())
print("got here")
my_other_process.start()
print("done")

当我 运行 这段代码时,"got here" 永远不会被打印出来。 loops_forever 在 "got here" 打印上方被调用,并且控制永远不会 returns 回到我的主 class。

我在这里做错了什么? 我以前以这种方式使用过多处理:

my_other_process = Process(target=OtherService, kwargs={"address":ADDRESS})
my_other_process.start()

它正确调用了 OtherService 的 init 函数并且 运行s init 函数作为一个单独的进程。 唯一的区别是这次我想调用 init 函数,然后 运行 loops_forever 方法永远作为一个单独的进程。

当您执行 target=my_other_service.loops_forever() 时,您调用 loops_forever。要将它作为函数传递而不是调用它,您可以去掉括号,例如 target=my_other_service.loops_forever.