我目前正在研究一些用 C 编写的模拟代码,这些代码在不同的远程机器上运行。当 C 部分完成后,我想通过使用 python 模拟 api 和某种作业队列系统对其进行扩展来简化我的工作,它应该执行以下操作:
1.指定一组应执行模拟的参数并将它们放入主机上的队列中
2.worker对远程机器进行模拟
3.返回结果给主机
我查看了完成这项任务的不同框架,我的第一选择归结为 IPython.parallel。我查看了文档,从我测试的结果来看,它似乎很容易使用。我的方法是使用负载平衡视图,如在
http://ipython.org/ipython-doc/dev/parallel/parallel_task.html#creating-a-loadbalancedview-instance
但我没有看到的是:
- 会发生什么,即如果 ipcontroller 崩溃,我的作业队列消失了吗?
- 如果远程机器崩溃会发生什么?是否有某种错误处理?
由于我运行了相对较长的模拟(1-2 周),我不希望我的模拟在系统的某些部分崩溃时失败。那么有没有办法在 IPython.parallel 中处理这个问题?
我的第二种方法是使用 pyzmq 并从头开始实施作业系统。在这种情况下,这种情况下最好的 zmq 模式是什么?
最后但并非最不重要的一点是,对于这种情况是否有更好的框架?