Python 从另一个进程访问类方法
我正在开发一个事件驱动系统,它有两个过程:Python 从另一个进程访问类方法,python,multiprocessing,Python,Multiprocessing,我正在开发一个事件驱动系统,它有两个过程: 带有Queue()的事件驱动算法 数据处理程序 数据处理程序是一个单独的类,它启动一个辅助进程,该进程是一个自包含的websocket(MySocket),用于更新自身中的数据。数据处理程序有两种方法:一种是从套接字获取和修改数据,另一种是将数据放入主事件驱动进程使用的队列中。简而言之,脚本执行以下操作: 更新数据->数据处理程序。更新市场()->将数据放入队列 确认信号 执行 重复 以下是数据处理程序代码片段: import multipro
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'sMySocket
和what'sMarketEvent
?如何,而不是多处理
,而使用与?@JonClements MySocket的协程是包含websocket的类。SocketDataHandler类仅将其实例化为一个新进程并访问其方法。@LawrenceD'Oliveiro我没有这方面的经验,但会研究它。