我需要大师们关于如何设置建模应用程序的建议。我有数千个场景可以在数千个合同上运行,用于现金流预测。假设我有 1000 个场景和 1000 个合约,我需要运行 1,000,000 个投影 (1000x1000)。我想使用 dask、ray 或其他方法并行执行此操作。我的数据在数据帧中,但我愿意接受更好的建议。我可以为每个运行创建 2 个循环(场景、合约),但这将是顺序的。
场景 1 w 合同 1
场景 1 w 合同 2
场景 1 w 合同3
. . .
场景1000 w 合同1000
我想将计算分发到多个处理器和多个服务器。
我将把我的问题保存在内部循环预测上,我必须在下次运行的 1,000,000 次运行的每个时间步长运行 100 个场景预测。
任何为我指出正确方向的建议都会有所帮助。
从一个简单的概念角度来看:
- 为自己编写一个函数,该函数将合约和场景作为参数并执行所需的计算
- 使用 Python 的
multiprocessing
设置工作线程池 - 创建要在工作线程之间共享的队列(从多处理包)
- 用所有组合填充队列(使用固定索引并仅将合约/场景
(C, S)
索引的元组推送到队列以减少所需空间可能是个好主意 - 将函数映射到给定队列的工作线程池
有更复杂的方法可以做到这一点(包括 amqp/celery/...),具体取决于您是要在多台机器上分配任务,还是只想分配给所有本地可用的核心。这个简单的概念应该包含所有必需的关键字,以便自己构建您的第一个本地多处理!