ecFlow 变量
我们已经看到 ecFlow 使用一些变量
(variable),比如 ECF_HOME,ECF_INCLUDE。
共有三种变量:
- ecFlow 使用的变量,例如
ECF_HOME - 用户定义的变量,不应该以
ECF开头,推荐使用大写字母来定义变量。 - ecFlow 生成的变量,可以在 job 中使用,例如包含 suite 的日期
ECF_DATE。
Ecf脚本
之前的例子中,我们复制 t1.ecf 为 t2.ecf。
编辑这两个文件,以用户定义的变量 SLEEP 为参数调用 unix 的 sleep 命令。
%include <head.h>echo "I will now sleep for %SLEEP% seconds"sleep %SLEEP%%include <tail.h>
suite definition
添加变量到 suite definition
Text
# Definition of the suite test.suite testedit ECF_INCLUDE "$ECF_HOME" # replace '$ECF_HOME' with the path to your ECF_HOME directoryedit ECF_HOME "$ECF_HOME"family f1task t1edit SLEEP 20task t2edit SLEEP 20endfamilyendsuite
Python
import osfrom pathlib import Pathfrom ecflow import Defs, Suite, Task, Family, Editdef create_family_f1():return Family("f1",Task("t1", Edit(SLEEP=20)),Task("t2", Edit(SLEEP=20)))print("Creating suite definition")home = os.path.abspath(Path(Path(__file__).parent, "../../../build/course"))defs = Defs(Suite('test',Edit(ECF_INCLUDE=home, ECF_HOME=home),create_family_f1()))print(defs)print("Checking job creation: .ecf -> .job0")print(defs.check_job_creation())print("Saving definition to file 'test.def'")defs.save_as_defs(str(Path(home, "test.def")))# To restore the definition from file 'test.def' we can use:# restored_defs = ecflow.Defs("test.def")
运行脚本:
$python test.pyCreating suite definition# 4.8.0suite testedit ECF_INCLUDE '/g3/wangdp/project/study/ecflow/ecflow-tutorial-code/build/course'edit ECF_HOME '/g3/wangdp/project/study/ecflow/ecflow-tutorial-code/build/course'family f1task t1edit SLEEP '20'task t2edit SLEEP '20'endfamilyendsuiteChecking job creation: .ecf -> .job0Saving definition to file 'test.def'
任务

