我对Luigi完全不熟悉,而且我已经遇到了一个我无法解决的问题。
所以,让我说我想要这样的事情:
所以基本上我的问题是:如何为我想要的多个实例多次执行一个任务,甚至可以以相同的方式向每个"分支"添加其他任务。
我知道它应该适用于requires()
功能,例如按return [list of Task for x in range(10)]
或类似的东西。但我无法找到正确的语法/方法。
我希望有人可以帮助我,我会非常感激!!
提前致以最诚挚的问候和谢意
答案 0 :(得分:0)
任务的唯一性由输出路径决定。如果输出路径相同,则青少年的任务是相同的。所以你可以做的是使同一个类的多个实例具有不同的输出路径。
在Luigi中执行此操作的建议方法是在任务类中添加一个参数,并在构造输出路径时使用此参数。
例如,
class TaskA(luigi.Task):
number = luigi.IntParameter()
def output():
base_path = 'path/to/a/dir'
file_name = '%5.5d.txt' % self.number
return LocalTarget(os.path.join(base_path, file_name))
现在,您可以通过以下方式在另一项任务中多次调用此任务:
class TaskB(luigi.Task):
def requires():
return [TaskA(i) for i in range(n)]
注意,第二次运行TaskB
时,其{1}}对1到n的要求已经满足。如果您总是想再次执行TaskA
,则应在其输出路径中添加一些随机性。