我目前正在使用C语言编写的一些模拟代码,它运行在不同的远程机器上。虽然C部分已经完成,但我想通过使用python模拟api和某种作业队列系统来扩展它来简化我的工作,它应该执行以下操作:IPython并行计算与pyzmq集群计算
1.指定一组参数,在该参数上模拟应进行,并经工作人员把它们放在一个队列中的主机上
2.perform模拟在远程机器上
3.返回结果给主机
我看了一下为实现不同的框架这项任务和我的第一选择归结为IPython.parallel。我查看了文档,并从我测试的内容中看出它很容易使用。我的方法是使用一个负载平衡的观点就像在
http://ipython.org/ipython-doc/dev/parallel/parallel_task.html#creating-a-loadbalancedview-instance
解释但我不明白的是:
- 会发生什么,即如果ipcontroller崩溃了,是我的工作队列到哪里去了?
- 如果远程机器崩溃会发生什么?是否有某种错误处理?
由于我运行了相当长的模拟(1-2周),我不希望我的模拟失败,如果系统的某些部分崩溃。那么在IPython.parallel中可能有某种方法可以处理这个问题吗?
我的第二种方法是使用pyzmq并从头开始实现作业系统。 在这种情况下,这种情况下最好的zmq模式是什么?
最后但并非最不重要的是,这种情况下可能有更好的框架吗?