Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 路易吉-平行分支_Python_Parallel Processing_Luigi - Fatal编程技术网

Python 路易吉-平行分支

Python 路易吉-平行分支,python,parallel-processing,luigi,Python,Parallel Processing,Luigi,我对路易吉完全是新手,我已经有了一个似乎无法解决的问题 假设我想要这样的东西: 所以基本上我的问题是:我怎样才能在一个任务中多次调用任意多个实例,甚至以相同的方式向每个“分支”添加其他任务 我知道它应该使用requires()函数,例如通过return[范围(10)内x的任务列表] 或者类似的事情。但是我找不到正确的语法/方法 我希望有人能帮助我,我将非常感激 事先致以最良好的问候和感谢任务的唯一性由输出路径决定。如果输出路径相同,则任务相同。因此,您可以做的是使用不同的输出路径创建同一类的多

我对路易吉完全是新手,我已经有了一个似乎无法解决的问题

假设我想要这样的东西:

所以基本上我的问题是:我怎样才能在一个任务中多次调用任意多个实例,甚至以相同的方式向每个“分支”添加其他任务

我知道它应该使用
requires()
函数,例如通过
return[范围(10)内x的任务列表]
或者类似的事情。但是我找不到正确的语法/方法

我希望有人能帮助我,我将非常感激


事先致以最良好的问候和感谢

任务的唯一性由输出路径决定。如果输出路径相同,则任务相同。因此,您可以做的是使用不同的输出路径创建同一类的多个实例

在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
时,它对
TaskA
的1到n的要求已经满足。如果您总是想再次执行
TaskA
,则应在其输出路径中添加一些随机性。

谢谢!这正是我要寻找的:)