3

我有一个任务要在 Python 中完成 X 次,我将使用 LSF 来加快速度。提交一份包含多个可以并行单独运行的 Python 脚本的作业,还是提交一个使用多处理器模块的 Python 脚本更好?

我的问题是我不相信 LSF 知道如何将 Python 代码拆分为多个进程(我不确定 LSF 是如何做到的)。但是,我也不希望有几个 Python 脚本四处飘荡,因为这看起来效率低下且杂乱无章。

手头的任务涉及解析六个非常大的 ASCII 文件并将输出保存在 Python dict 中以备后用。我想并行解析这六个文件(每个文件大约需要 3 分钟)。LSF 是否允许 Python 告诉它类似“嘿,这是一个脚本,但你要把它分成这六个进程”?LSF 是否需要Python 来告诉它,还是它已经知道如何做到这一点?

如果您需要更多信息,请告诉我。我很难在“刚刚好”和“太多”的背景之间取得平衡。

4

1 回答 1

3

将 LSF 视为一种(非常简单的)方式是将 LSF 视为一个启动进程并让进程知道已分配给它的内核数(可能在不同主机上)的系统。LSF 不能阻止您的程序做一些愚蠢的事情(例如,如果它的多个实例同时运行,并且一个实例覆盖另一个实例的输出)。

使用 LSF 的一些常用方法。

  • 运行 6 个顺序作业,每个作业处理一个文件。这 6 个可以并行运行。在前 6 个完成之后运行一个相关的第七个作业,它将前 6 个的输出组合成一个输出。
  • 在单个主机上运行分配有 6 个内核的并行作业。似乎 python 多处理模块很适合这里。env 变量$LSB_MCPU_HOSTS将告诉您为作业分配了多少核心,因此您知道池有多大。
  • 运行分配有 6 个内核的并行作业,并且可以在多个主机上运行。同样,您的进程必须能够在这些其他主机上自行启动。(或使用 blaunch 来帮忙)

我不确定这三种方式中哪一种最适合您的需要。但我希望解释能帮助你做出决定。

于 2014-05-28T02:33:56.857 回答