关于如何编写一个好的 python 包装器 LSF 的建议
Posted
技术标签:
【中文标题】关于如何编写一个好的 python 包装器 LSF 的建议【英文标题】:Recommendation on how to write a good python wrapper LSF 【发布时间】:2013-03-23 17:11:04 【问题描述】:我正在创建一个 python 包装脚本,并且想知道创建它的好方法是什么。
我想连续运行代码。例如:
第 1 步。 运行相同的程序(并行 - 并行化很容易,因为我使用 LSF 系统,所以我只提交三个不同的作业)。
我并行运行程序,每次运行需要一个 fin.txt 并输出一个 fout.txt,即当它们都运行时,它们将从三个输入文件 f1in.txt、f2in.txt 中产生 3 个输出文件, f3in.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 具有工作依赖性,但我发现这种方式更加清晰和易于使用,尽管可能不是最佳的。
【问题讨论】:
【参考方案1】:我是 LSF 系统的用户,我的主要抱怨是出口处理和清理。我认为一个好主意是发送一个批处理作业数组,例如:初始化任务、腿部工作任务、清理任务。 LSF 可以完成所有三个并向等待的头节点发送返回码。很多时候 LSF 非常适合发送一个作业或命令,但它并没有真正设置为处理系统处理。
除此之外,祝你好运:)
【讨论】:
以上是关于关于如何编写一个好的 python 包装器 LSF 的建议的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 中,如何定义一个函数包装器来验证具有特定名称的参数?