首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Luigi处理输出

如何使用Luigi处理输出
EN

Stack Overflow用户
提问于 2016-09-14 16:46:35
回答 1查看 4.7K关注 0票数 7

我试图理解luigi是如何工作的,我理解了这个想法,但是实际的实现要困难一些;)这就是我所拥有的:

代码语言:javascript
运行
复制
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):生成输出来解决这个问题\特性。我无法理解如何在不写入文件的情况下产生合理的输出,例如:

代码语言:javascript
运行
复制
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))

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

EN

Stack Overflow用户

回答已采纳

发布于 2016-09-15 02:16:22

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

Luigi任务可以在不同的进程中运行。因此,您通常必须写入磁盘、数据库、泡菜或某种外部机制,以便在进程之间交换数据(并且可以验证进程的存在),如果您想要交换任务的结果的对象的话。

与编写需要目标的output()方法不同,您还可以重写complete()方法,在该方法中,可以编写任何允许任务被视为完成的自定义逻辑。

票数 8
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39495757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档