3

我正在创建一个 python 包装脚本,并且想知道创建它的好方法是什么。

我想连续运行代码。例如:

步骤 1. 运行相同的程序(并行 - 并行化很容易,因为我使用的是 LSF 系统,所以我只提交三个不同的作业)。

我并行运行程序,每次运行一个fin.txt并输出一个fout.txt,即当它们都运行时,它们将从三个输入文件f1in.txt、f2in.txt、f3in中产生3个输出文件。 txt、f1out.txt、f2out.txt、f3out.txt。

(在 LSF 系统中)当程序每次运行成功完成后,都会产生一个日志文件输出,f1log.out、f2log.out、f3log.out。

日志文件输出是这种形式,即,如果 f1log.out 成功运行,它将看起来像这样。

------------------------------------------------------------
# LSBATCH: User input
------------------------------------------------------------

Successfully completed.

Resource usage summary:

    CPU time   :     86.20 sec.
    Max Memory :       103 MB
    Max Swap   :       881 MB

    Max Processes  :         4
    Max Threads    :         5

The output (if any) is above this job summary.

因此,我希望我的包装器检查(每 5 分钟左右)每次运行(1、2、3)是否已创建日志文件,如果已创建,我希望包装器检查是否它已成功完成(也就是,如果字符串成功完成出现在日志文件中)。

此外,如果其中一个运行完成并生成一个未成功完成的日志文件,我希望我的包装器结束并报告运行 (k=1,2,3) 未完成。

在那之后,

第2步。如果所有三个运行都成功完成,我将运行另一个将这三个文件作为输入的程序......否则我会打印一个错误。

基本上在我的问题中,我正在寻找两件事:

这听起来像是编写包装器的好方法吗?

如何在 python 中检查文件的存在,并以一种好的方式每隔一定时间搜索一个模式?

笔记。我知道 LSF 具有工作依赖性,但我发现这种方式更清晰且易于使用,尽管可能不是最佳的。

4

1 回答 1

1

我是 LSF 系统的用户,我主要的抱怨是出口处理和清理。我认为一个好主意是发送一个批处理作业数组,例如:初始化任务、腿部工作任务、清理任务。LSF 可以完成所有三个并向等待的头节点发送返回码。很多时候 LSF 非常适合发送一项作业或命令,但它并没有真正设置为处理系统处理。

除此之外,我祝你好运:)

于 2013-05-02T13:38:50.493 回答