LSF:提交一个使用multiprocessor module*的Python脚本,还是*一次提交几个“preplit”脚本?

2021-02-26 14:39:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的问题是我不相信LSF知道如何将Python代码分成几个进程(我不确定LSF是如何做到这一点的)。但是,我也不想让几个Python脚本到处乱窜,因为这看起来效率低下而且杂乱无章。在

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

如果你需要更多信息请告诉我。我很难在“适可而止”和“太多”的背景之间取得平衡。在

1条回答
网友
1楼 ·

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

使用LSF的一些常见方法。在

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

我不知道这三种方法中哪一种最适合你需要。但我希望这个解释能帮助你做出决定。在

相关问题