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
.
我想使用 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
.