Python:启动执行另一个对象的新进程';s法

Python:启动执行另一个对象的新进程';s法,python,subprocess,python-multiprocessing,Python,Subprocess,Python Multiprocessing,我想开始一个新的进程,它将创建一些其他对象,然后调用objects循环方法 我尝试使用Python的多处理模块,如我前面的问题所述: 以下是我尝试过的: import OtherService from multiprocessing import Process my_other_service = OtherService(address=ADDRESS) my_other_process = Process(target=my_other_service.loops_forever) my

我想开始一个新的进程,它将创建一些其他对象,然后调用objects循环方法

我尝试使用Python的多处理模块,如我前面的问题所述:

以下是我尝试过的:

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)不可序列化,并且在上面的最后一行中出现了“can't pickle\u thread.lock object”错误

如何从我的主类启动一个新进程,并告诉该进程创建一个新的OtherService对象(只处理该进程的address参数),然后告诉另一个进程永远调用loops\u


请注意,解决方案不必使用pythons多处理,我将使用最有意义的软件包。

您的问题已经有了答案,用英语回答。你只需要把它翻译成代码

告诉该进程创建一个新的OtherService对象(只处理该进程的address参数),然后告诉另一个进程永远调用loops\u

创建一个简单的新函数,它将获取一个地址,创建一个
OtherService
对象,并调用它的
loops\u forever()
方法。此函数作为您创建的新流程的
目标传递

像这样:

def create_service_and_loop(address):
    service = OtherService(address)
    service.loops_forever()

proc = multiprocessing.Process(target=create_service_and_loop, args=(ADDRESS,))
proc.start()

请在此问题中直接发布相关代码。当大部分相关代码都在你的链接问题中时,回答这个问题对每个人都不是很有帮助。抱歉@bnaecker。我将代码添加到我尝试的解决方案中请解释为什么要在主进程中实例化
my_other_service
,然后在另一个进程中调用其方法之一。为什么不在另一个进程中实例化并从那里调用它的方法呢?谢谢@bnaecker!不知道这么简单。工作得很有魅力:)不客气。一般来说,将对象完全保留在一个进程或线程中是一个好主意。它使您的生活更轻松,并避免了许多讨厌的同步问题。祝你好运