我正在创建一个 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 具有工作依赖性,但我发现这种方式更清晰且易于使用,尽管可能不是最佳的。