我正在开发一个事件驱动系统,它有两个过程:
使用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类而不使用multiprocessing.Manager或Value,但我相信可以有更有效和正确的方法来实现它。