调用另一个进程';Python中的s方法

调用另一个进程';Python中的s方法,python,multiprocessing,tornado,Python,Multiprocessing,Tornado,我的设置如下-我有一个基于Tornado的HTTP服务器,它几乎就是“hello world”示例: 现在在这个设置中,我还有另一个由根进程生成的进程(我们称之为控制进程)。因此,该控制流程是两个Tornado handler流程的同级。当然,我可以通过根进程创建的管道在处理程序进程和控制进程之间进行通信。然而,我更感兴趣的是调用控制过程的方法并获取其输出 做这样的事情最好的方法是什么?如果我使用管道将请求从处理程序发送到控件并返回结果,是否应该使用锁来实现流程安全?您不需要管道的锁。管道是它自

我的设置如下-我有一个基于Tornado的HTTP服务器,它几乎就是“hello world”示例:

现在在这个设置中,我还有另一个由根进程生成的进程(我们称之为控制进程)。因此,该控制流程是两个Tornado handler流程的同级。当然,我可以通过根进程创建的管道在处理程序进程和控制进程之间进行通信。然而,我更感兴趣的是调用控制过程的方法并获取其输出


做这样的事情最好的方法是什么?如果我使用管道将请求从处理程序发送到控件并返回结果,是否应该使用锁来实现流程安全?

您不需要管道的锁。管道是它自己的同步。或者,换一种方式,管道的两侧是独立的对象

(当然,控制进程可能需要内部锁定,例如,如果它处理来自不同于主事件循环的线程的管道,并且需要与主循环中运行的代码共享任何数据,但这与进程间安全无关。)


无论如何,如果您退一步,从更高的层次来考虑这个问题,那么您实现的就是RPC机制的确切定义。如果您所做的足够简单,那么用这种方式从头开始实现它是可以的,但是如果没有,您可能需要向
控件添加另一个协议,并让Tornado与您现有的协议一起管理它。

是的,它正是一个RPC。是的,我不知怎么搞糊涂了,两个处理程序的两个输入和它们的输出可能不知怎么搞混了(真丢脸)。我对Tornado很陌生,你能具体说明一下“为
控制添加另一个协议”是什么意思吗?@DJV:我的意思是……无论你在问题中四次使用这个名称是什么意思。您需要一些“处理程序进程”来针对“控制进程”发出请求。因此,如果该“控制进程”已经在使用Tornado来实现,例如web应用程序服务器、JSON RPC over sockets服务器或其他什么,只需添加另一个协议供另一个进程使用,而不是从头实现一些独立的东西。
server = tornado.httpserver.HTTPServer(app)
server.bind(8888)
server.start(2)
tornado.ioloop.IOLoop.instance().start()