我想调用一个类似于 parallelize.map(function, args) 的函数,它返回一个结果列表,并且用户对实际过程视而不见。我想将调用子进程并行化到另一个受益于多核的 unix 程序的功能之一。
我首先尝试了 ipython-cluster-helper。这适用于我的设置,但我在其他几台机器上安装时遇到了问题。我还必须在设置过程中询问集群的名称。我还没有看到其他程序为您在集群上启动作业,所以我不知道这是否是公认的做法。
joblib 似乎是并行化的标准,但它一次只能使用一个集群或计算机。这也可以,但速度要慢得多,因为它没有使用集群。
此外,如果程序运行时间过长而无法确保人们使用集群,我正在运行此代码的服务器会抱怨。我是否编写了另一个脚本来仅在我们的集群上运行该程序——如果我使用了 joblib?
目前,我在 setup.py 中添加了特殊参数来添加集群名称并在必要时安装 ipython-cluster-helper。当调用 map 时,它首先检查 ipython-cluster-helper 和集群名称是否可用,使用它们,否则使用 joblib。
还有什么其他方法可以实现这一目标?我正在寻找一种标准方法来执行此操作,该方法适用于大多数有或没有集群的机器,因此我可以发布代码并使其易于使用。
谢谢。