擅长:python、mysql、java
<p>你已经知道了,你可以通过</p>
<pre><code>--param-name param-value
</code></pre>
<p>在命令行中。在代码中,必须通过实例化<code>Parameter</code>类或其子类之一来声明这些变量。子类用于告诉luigi变量是否具有非字符串的数据类型。下面是一个使用两个命令行参数的示例,一个是<code>Int</code>,另一个是<code>List</code>:</p>
<pre><code>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))
</code></pre>
<p>请注意,listparam实际上是由luigi转换成元组的,因此如果要对它们执行列表操作,必须首先将它们转换回原来的位置(这是一个<a href="https://github.com/spotify/luigi/issues/859" rel="noreferrer">known issue</a>,但看起来不会很快修复)。</p>
<p>您可以通过这样的命令行调用上面的模块(我将代码保存为一个名为“testmodule.py”的文件,并从同一目录中进行调用):</p>
<pre><code>luigi --module testmodule testClass --int-var 3 --list-var '[1,2,3]' --local-scheduler
</code></pre>
<p>注意,对于包含<code>_</code>的变量,必须用<code>-</code>替换。
呼叫产生(以及许多状态消息):</p>
<pre><code>Integer Param + 1 = 4
List Param with added element: [1, 2, 3, 'new_elem']
</code></pre>