Python 从另一个进程访问类方法

Python 从另一个进程访问类方法,python,multiprocessing,Python,Multiprocessing,我正在开发一个事件驱动系统,它有两个过程: 带有Queue()的事件驱动算法 数据处理程序 数据处理程序是一个单独的类,它启动一个辅助进程,该进程是一个自包含的websocket(MySocket),用于更新自身中的数据。数据处理程序有两种方法:一种是从套接字获取和修改数据,另一种是将数据放入主事件驱动进程使用的队列中。简而言之,脚本执行以下操作: 更新数据->数据处理程序。更新市场()->将数据放入队列 确认信号 执行 重复 以下是数据处理程序代码片段: import multipro

我正在开发一个事件驱动系统,它有两个过程:

  • 带有Queue()的事件驱动算法

  • 数据处理程序

  • 数据处理程序是一个单独的类,它启动一个辅助进程,该进程是一个自包含的websocket(MySocket),用于更新自身中的数据。数据处理程序有两种方法:一种是从套接字获取和修改数据,另一种是将数据放入主事件驱动进程使用的队列中。简而言之,脚本执行以下操作:

  • 更新数据->数据处理程序。更新市场()->将数据放入队列
  • 确认信号
  • 执行
  • 重复
  • 以下是数据处理程序代码片段:

        import multiprocessing as mp
        class SocketDataHandler(DataHandler):
           def __init__(self, events, client, markets_list):
           """
           Initialises data handler.
    
           Parameters:
           events - The Event Queue.
           markets_list - A list of symbol strings.
           """
           self.events = events
           self.client = client
           self.markets_list = markets_list
           self.market_orders = []
           self.socket = None
           self.proc = None
           self.start_w_proc()
    
        def start_w_proc(self):
           market_list = self.markets_list[0]
           self.socket = MySocket(self.markets_list[0])
           self.proc = mp.Process(target=self.socket.run())
           self.proc.start()
    
        def get_market_orders(self):
           market_orders = self.socket.get_order_book()
           #...Rearrange the data
           return market_orders
    
        def update_market(self):
           self.market_orders = self.get_market_orders()
           self.events.put(MarketEvent())
    

    到目前为止,代码似乎是有效的,即我可以从主进程访问MySocket类,而无需使用多处理。管理器或值,但我相信可以有一种更有效和正确的方法来实现这一点。

    很可能有,但是什么是
    MySocket
    和什么是
    MarketEvent
    ,代替
    多处理
    ,使用coroutines代替?@JonClements MySocket是包含websocket的类。SocketDataHandler类仅将其实例化为一个新进程并访问其方法。@LawrenceD'Oliveiro我没有这方面的经验,但会深入研究它。很可能只有what's
    MySocket
    和what's
    MarketEvent
    ?如何,而不是
    多处理
    ,而使用与?@JonClements MySocket的协程是包含websocket的类。SocketDataHandler类仅将其实例化为一个新进程并访问其方法。@LawrenceD'Oliveiro我没有这方面的经验,但会研究它。