【发布时间】:2020-11-27 13:49:07
【问题描述】:
一点上下文: 我正在编写一个股票回溯测试程序,它订阅了一个 websocket 提要,该提要为 100 多只股票 1 分钟蜡烛流数据。由于这是一个回测程序,它实际上是由我的本地数据提供的。
我正在尝试利用 Ray 进行多处理。
所以它将在本地循环接收库存数据,例如,A,B,C .... A,B,C ...连续直到时间段结束。目前,我对 Ray 的设置是为每个股票数据异步调用 handleStock.remote()。出于性能原因,每次处理相同的库存但不同的时间时,应该有一些缓存来帮助更快地处理。但是由于每次库存中的每一个都作为 Ray 中的全新进程/工作者运行,我无法共享内存并对其进行写入。我试过 Ray put 方法,但它是只读的。
是否有解决此问题的方法或运行此回测的其他工具?
【问题讨论】:
-
我不确定 Ray,但如果您使用 numpy 数组,您当然可以写入多进程 shared_memory。您只需要在写入完成时锁定对象,然后在完成后释放它。 @Rboreal_Frippery 的回答 here 是如何做到这一点的一个很好的例子。
标签: python multiprocessing ray