我正在试图了解luigi是如何工作的,我明白了,但实际实现有点困难;)这就是我所拥有的:
class MyTask(luigi.Task):
x = luigi.IntParameter()
def requires(self):
return OtherTask(self.x)
def run(self):
print(self.x)
class OtherTask(luigi.Task):
x = luigi.IntParameter()
def run(self):
y = self.x + 1
print(y)
这与RuntimeError: Unfulfilled dependency at run time: OtherTask_3_5862334ee2
失败。我想我需要使用def output(self):
生成输出来解决此问题\功能。我无法理解如何在不写文件的情况下产生合理的输出,比如说:
def output(self):
return luigi.LocalTarget('words.txt')
def run(self):
words = [
'apple',
'banana',
'grapefruit'
]
with self.output().open('w') as f:
for word in words:
f.write('{word}\n'.format(word=word))
我试过阅读文档,但根本无法理解输出背后的概念。如果我只需要输出到屏幕怎么办?如果我需要将对象输出到另一个任务怎么办?谢谢!
答案 0 :(得分:7)
如果我需要将对象输出到另一个任务怎么办?
Luigi任务可以在不同的进程中运行。因此,如果要交换对象的结果,通常必须写入磁盘,数据库,pickle或允许在进程之间交换数据(并且可以验证其存在)的外部机制。一项任务。
与编写需要目标的output()方法相反,您还可以覆盖complete()方法,您可以在其中编写任何允许任务被认为完成的自定义逻辑。