我正在使用luigi在Python中,並試圖瞭解luigi參數如何在編譯時與運行時一起工作。luigi中的默認DateSecondParameter(python)
import luigi
import datetime
class HelloWorld(luigi.Task):
run_dt = luigi.DateSecondParameter(default = datetime.datetime.now())
def requires(self):
return(None)
def output(self):
return(luigi.LocalTarget('helloworld.txt'))
def run(self):
with self.output().open('w') as outfile:
outfile.write('Hello World!\n')
我用
datetime.datetime.now()
在類定義的默認DateSecondParameter爲的HelloWorld()。我運行以下代碼:
a = HelloWorld()
# wait a few seconds
b = HelloWorld()
a is b
'True'
當我將當前日期和時間作爲參數傳遞時,我得到了不同的結果。
x = HelloWorld(run_dt = datetime.datetime.now())
# wait a few seconds
y = HelloWorld(run_dt = datetime.datetime.now())
x is y
'False'
是對
DateSecondParameter
在編譯時設置的類定義的HelloWorld()的默認,而不是當我實例化類?我是否需要顯式傳遞當前的日期和時間作爲參數來實例化一個唯一的實例?