如何使用Luigi处理输出

4c7*_*b41 6 python luigi

我正在努力了解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)
Run Code Online (Sandbox Code Playgroud)

这失败了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))
Run Code Online (Sandbox Code Playgroud)

我试过阅读文档,但我根本无法理解输出背后的概念.如果我只需要输出到屏幕怎么办?如果我需要将对象输出到另一个任务怎么办?谢谢!

Mat*_*ght 7

如果我需要将对象输出到另一个任务怎么办?

Luigi任务可以在不同的进程中运行.因此,如果要交换对象的结果,通常必须写入磁盘,数据库,pickle或允许在进程之间交换数据(并且可以验证其存在)的外部机制.一个任务.

与编写需要目标的output()方法相反,您还可以覆盖complete()方法,您可以在其中编写任何允许任务被认为完成的自定义逻辑.