我有通常的大量依赖作业,并希望在 PBS 集群环境中有效地运行它们。我一直在使用 Ruffus 并且对它非常满意,但我也想尝试使用其他方法。

在 python 中看起来很有趣的一个是 jug。然而,似乎 jug 假设这些工作的要求是同质的。我有一些工作需要 8GB RAM,而其他工作只需要 100MB;有些可以消耗所有处理器,有些是单线程的。我的目标是能够快速组装管道,运行它并根据依赖项对其进行“更新”,并合理地进行日志记录,以便我可以看到哪些作业仍需要运行。是否有人使用水壶或其他具有这些类型要求的类似系统?

最佳答案

壶的作者在这里。

Jug 确实很好地处理了依赖关系。如果您更改任何输入或中间步骤,运行 jug status 将告诉您计算的状态。

目前没有办法指定某些任务(jug 称之为作业)应该分配多个进程。过去,每当我有要在多个线程中运行的任务时,我都被迫采用最坏情况的方法并将所有进程分配给 jug execute 进程。

这当然意味着单线程任务将占用所有进程。由于大部分计算都在多线程任务中,这是可以接受的。

关于Python jug(或其他)用于在具有异构任务的集群环境中进行令人尴尬的并行作业,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12750787/

10-12 05:29