从另一个进程访问类方法

时间:2017-10-21 21:00:50

标签: python multiprocessing

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

  1. 使用Queue()

  2. 的事件驱动算法
  3. 数据处理程序。

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

    1. 更新数据 - > data_handler.update_market() - >将数据放入队列
    2. 确认信号
    3. 执行
    4. 重复
    5. 以下是数据处理程序代码段:

          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类而不使用multiprocessing.Manager或Value,但我相信可以有更有效和正确的方法来实现它。

0 个答案:

没有答案