作业处理
alchem的Python项目详细描述
炼金术是一种简化诸如科学实验之类的工作的工具,这些工作在结构上差别极小。功能包括:
-支持多处理器,
-很好地处理标准输出和作业的标准错误,
-很好地处理目录结构,这样您就不必在作业函数中处理这些问题。
炼金术需要两件事才能开始。首先,您需要定义一个函数
,它实际上可以满足您的需要。然后,您需要一个配置文件(我们使用yaml来实现这一点),您可以在其中放置实验的参数化。然后,您可以使用
$python alchemy.py-c config.yaml启动您的实验
例如,您可能希望在月球上以1.63的引力值运行模拟,在地球上以9.81的引力值运行模拟。
你想做两个实验,一个从地球开始,另一个从月球开始。你的火箭名为“rockstar”,你希望它正好有3米长。然后定义以下yaml
文档。
--
函数:machines.vehicles.rocket
名称:rockstar
长度:3.0
?:[{gravity:9.81}.
{gravity:1.63}]
…
问号符号告诉alchemy
要为列表的每个值运行一个实验。因此,它将产生以下词典。
“name”:“rockstar”,
“length”:3.0,
“gravity”:1.63}
炼金术将生成所有不同值的叉积。如果你有
倍数?在您的yaml文件中,所有可能的值是多少?s将被
组合起来。
但是您的函数究竟是如何调用的?炼金术检索
字段“函数”的值,并在pythonpath上查找该对象。它删除
函数字段,并将结果字典作为关键字参数
馈送到函数中。代码大致如下:
请访问http://pyyaml.org/
experiment s的输出
——
alchemy使用python自己的“uuid”模块为您的实验生成一个唯一的标识符。然后,它将为该标识符创建一个目录,并为实验的每个作业创建一个
(如果没有不同的值,则为1)
生成一个单独的子目录,子目录的数目将不断增加。
启动炼金术时将打印出ID。
因此,如果在函数中使用相对路径,则可以确保
所有输出文件都位于该目录中。
此外,将创建一个文件“stdout”和一个文件“stderr”,将相应流重定向到其中。此外,使用的实际配置
将保存到“config.yaml”中以供将来参考。
可以指定与“-p”选项一起使用的进程数。它默认为o主机处理器。
限制
——
-不支持群集
-使用不同值的组合,而不是交叉积
-支持多处理器,
-很好地处理标准输出和作业的标准错误,
-很好地处理目录结构,这样您就不必在作业函数中处理这些问题。
炼金术需要两件事才能开始。首先,您需要定义一个函数
,它实际上可以满足您的需要。然后,您需要一个配置文件(我们使用yaml来实现这一点),您可以在其中放置实验的参数化。然后,您可以使用
$python alchemy.py-c config.yaml启动您的实验
例如,您可能希望在月球上以1.63的引力值运行模拟,在地球上以9.81的引力值运行模拟。
你想做两个实验,一个从地球开始,另一个从月球开始。你的火箭名为“rockstar”,你希望它正好有3米长。然后定义以下yaml
文档。
--
函数:machines.vehicles.rocket
名称:rockstar
长度:3.0
?:[{gravity:9.81}.
{gravity:1.63}]
…
问号符号告诉alchemy
要为列表的每个值运行一个实验。因此,它将产生以下词典。
“name”:“rockstar”,
“length”:3.0,
“gravity”:1.63}
炼金术将生成所有不同值的叉积。如果你有
倍数?在您的yaml文件中,所有可能的值是多少?s将被
组合起来。
但是您的函数究竟是如何调用的?炼金术检索
字段“函数”的值,并在pythonpath上查找该对象。它删除
函数字段,并将结果字典作为关键字参数
馈送到函数中。代码大致如下:
请访问http://pyyaml.org/
experiment s的输出
——
alchemy使用python自己的“uuid”模块为您的实验生成一个唯一的标识符。然后,它将为该标识符创建一个目录,并为实验的每个作业创建一个
(如果没有不同的值,则为1)
生成一个单独的子目录,子目录的数目将不断增加。
启动炼金术时将打印出ID。
因此,如果在函数中使用相对路径,则可以确保
所有输出文件都位于该目录中。
此外,将创建一个文件“stdout”和一个文件“stderr”,将相应流重定向到其中。此外,使用的实际配置
将保存到“config.yaml”中以供将来参考。
可以指定与“-p”选项一起使用的进程数。它默认为o主机处理器。
限制
——
-不支持群集
-使用不同值的组合,而不是交叉积