【问题标题】:Need setup recommendation for parallel processing many contracts through many scenarios需要设置建议以通过许多场景并行处理许多合同
【发布时间】:2019-05-03 22:33:48
【问题描述】:

我需要专家就如何设置建模应用程序提出建议。我有数千个场景要运行在数千个现金流预测合同上。假设我有 1000 个场景和 1000 个合约,我需要运行 1,000,000 个预测 (1000x1000)。我想使用 dask、ray 或其他方法并行执行此操作。我的数据在数据框中,但我愿意接受更好的建议。我可以为每次运行创建 2 个循环(场景、合同),但这将是连续的。

合同 1 的场景 1

合同 2 的场景 1

合同 3 的场景 1

。 . .

Scenario1000 w Contract1000

我想将计算分配给多个处理器和多个服务器。

我将把我的问题保存在内部循环预测上,我必须在下一次运行 1,000,000 次的每个时间步运行 100 个场景预测。

任何能指引我正确方向的建议都会有所帮助。

【问题讨论】:

  • 您应该提供一些代码 sn-ps 显示一些数据示例,以及您想要实现的基本组合变化。实际上,您的措辞过于宽泛,无法给出合理的答案。不过我的预感是,使用 dask 可以相对简单地回答您想要的问题。

标签: python pandas parallel-processing dask


【解决方案1】:

从简单的概念来看:

  • 自己编写一个函数,将合约和场景作为参数并执行所需的计算
  • 使用 Python 的 multiprocessing 设置工作池
  • 创建要在工作人员之间共享的队列(来自多处理程序包)
  • 用所有组合填充队列(使用固定索引可能是个好主意,并且只将合约/场景索引的元组 (C, S) 推送到队列以减少所需空间
  • 将您的函数映射到给定队列的工作池

有更精细的方法可以做到这一点(包括 amqp/celery/...),具体取决于您是想将任务分配到多台机器还是仅分配到所有本地可用的内核。这个简单的概念应该包含您自己构建第一个本地多处理所需的所有关键字!

【讨论】:

  • 我能否通过 Python 的多处理跨多台机器运行?我以前只在单机上使用过这个。您能否详细说明“推送一组合约/场景索引”?您是指合同数据框的 id 和场景的 id 吗?我计划从合同和单一场景数据框中传递一个系列。会不会太占地方?感谢您的帮助。
  • 不,您不能在多台机器上使用 Python 的标准库 multiprocessing。关于 ID:是的,这就是我的意思。考虑填充完整数据系列的 1M 组合所需的空间;你可以计算出来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多