正如您已经知道的那样,您可以通过以下方式将参数传递给 luigi
--param-name param-value
在命令行中。Parameter
在您的代码中,您必须通过实例化类或其子类之一来声明这些变量。子类用于告诉 luigi 变量是否具有非字符串的数据类型。这是一个使用两个命令行参数的示例,一个Int
和一个List
:
import luigi
class testClass(luigi.Task):
int_var = luigi.IntParameter()
list_var = luigi.ListParameter()
def run(self):
print('Integer Param + 1 = %i' % (self.int_var + 1))
list_var = list(self.list_var)
list_var.append('new_elem')
print('List Param with added element: ' + str(list_var))
请注意,ListParams 实际上由 luigi 转换为元组,因此如果您想对它们进行列表操作,您必须先将它们转换回来(这是一个已知问题,但看起来不会很快修复)。
您可以像这样从命令行调用上述模块(我已将代码保存为名为“testmodule.py”的文件并从同一目录内进行调用):
luigi --module testmodule testClass --int-var 3 --list-var '[1,2,3]' --local-scheduler
请注意,对于包含 a 的变量_
,必须将其替换为-
。调用产生(以及许多状态消息):
Integer Param + 1 = 4
List Param with added element: [1, 2, 3, 'new_elem']