我想启动一个新进程,它将创建一些其他对象,然后调用该对象的loops_forever方法。
我尝试使用Python的多处理模块,如我先前的SO问题所述:Python Multiprocessing calling object method
以下是我的尝试:
import OtherService
from multiprocessing import Process
my_other_service = OtherService(address=ADDRESS)
my_other_process = Process(target=my_other_service.loops_forever)
my_other_process.start()
此解决方案的问题在于创建的对象(OtherService)不可序列化,并且我得到了一个"无法解决_thread.lock对象"上面最后一行的错误。
如何从我的主类启动一个新进程,并告诉该进程创建一个新的OtherService对象(只将该进程交给address参数),然后告诉其他进程调用loops_forever?
请注意,该解决方案不必使用pythons多处理,我将使用最有意义的包。
答案 0 :(得分:1)
你的问题用英语得到答案。您只需将其翻译成代码即可。
告诉该进程创建一个新的OtherService对象(只将该进程交给address参数),然后告诉其他进程调用loops_forever?
创建一个简单的新函数,它将获取一个地址,创建一个OtherService
对象,并调用其loops_forever()
方法。 此函数是作为您创建的新流程的target
传递的内容。
像这样:
def create_service_and_loop(address):
service = OtherService(address)
service.loops_forever()
proc = multiprocessing.Process(target=create_service_and_loop, args=(ADDRESS,))
proc.start()