并行化的正确工作流程是什么:在群集或多进程上运行?

时间:2016-03-02 20:53:59

标签: python parallel-processing ipython-parallel joblib

我想调用类似于parallelize.map(function,args)的函数,该函数返回结果列表,用户对实际过程视而不见。我想并行化的一个功能是将子进程调用到另一个受益于多个内核的unix程序。

我首先尝试了ipython-cluster-helper。这适用于我的设置,但我遇到了在其他几台机器上安装它的问题。我还必须在安装过程中询问群集的名称。我没有看到其他程序为您启动集群作业,所以我不知道这是否是可以接受的做法。

joblib似乎是并行化的标准,但它一次只能使用一个集群或计算机。这也有效,但由于没有使用群集,因此速度明显变慢。

此外,我运行此代码的服务器会抱怨程序运行时间过长以确保人们使用群集。我是否只编写另一个脚本来在我们的集群上运行该程序 - 如果我使用了joblib?

现在,我在setup.py中添加了特殊参数来添加集群名称,并在必要时安装ipython-cluster-helper。当调用map时,它首先检查ipython-cluster-helper和集群名称是否可用,使用它们,否则使用joblib。

有什么方法可以实现这一目标?我正在寻找一种标准的方法,可以在大多数机器上使用或不使用集群,因此我可以发布代码并使其易于使用。

感谢。

0 个答案:

没有答案