如何使 Python 库 Ray 共享内存可写?
How to make Python library Ray shared memory writeable?
一些背景信息:
我正在编写一个股票回测程序,该程序订阅一个 websocket 提要,该提要流式传输超过 100 只股票的数据 1 分钟蜡烛。由于这是一个回溯测试程序,它实际上是由我的本地数据提供的。
我正在尝试利用 Ray 进行多处理。
因此它会在本地循环接收股票数据,例如A,B,C .... A,B,C ...不断地直到时间段结束。目前我对 Ray 的设置是为每个股票数据异步调用 handleStock.remote()
。出于性能原因,每次处理相同库存但时间不同时,应该有一些缓存来帮助更快地处理。但是由于每个时间的每个股票都是 运行ning 作为 Ray 中的全新 process/worker,我没有地方可以共享内存并写入它。我尝试了 Ray put
方法,但它是只读的。
有没有办法解决此问题或使用其他工具来 运行 此回测?
Ray 对象存储值应为 first-writer-wins。这里的一种可能选择是将数据存储在 actor 而不是对象存储中。
如果您确实需要 return 对象并且性能很重要,也许可以将操作分解为 2 个异步操作。
- 执行计算
- Return 结果
一些背景信息: 我正在编写一个股票回测程序,该程序订阅一个 websocket 提要,该提要流式传输超过 100 只股票的数据 1 分钟蜡烛。由于这是一个回溯测试程序,它实际上是由我的本地数据提供的。
我正在尝试利用 Ray 进行多处理。
因此它会在本地循环接收股票数据,例如A,B,C .... A,B,C ...不断地直到时间段结束。目前我对 Ray 的设置是为每个股票数据异步调用 handleStock.remote()
。出于性能原因,每次处理相同库存但时间不同时,应该有一些缓存来帮助更快地处理。但是由于每个时间的每个股票都是 运行ning 作为 Ray 中的全新 process/worker,我没有地方可以共享内存并写入它。我尝试了 Ray put
方法,但它是只读的。
有没有办法解决此问题或使用其他工具来 运行 此回测?
Ray 对象存储值应为 first-writer-wins。这里的一种可能选择是将数据存储在 actor 而不是对象存储中。
如果您确实需要 return 对象并且性能很重要,也许可以将操作分解为 2 个异步操作。
- 执行计算
- Return 结果