1

我有一个A将文件输出到通道的过程outA。我想将该文件用作 3 个下游进程的输入BC并且D. 由于outA创建的通道默认为队列通道,因此我不能多次直接使用该文件(与价值通道不同)。

目前,我使用into运算符复制通道,如此outA所述(参见下面的代码)。

我也知道您可以通过执行从文件创建价值通道Channel.value(file('/path/to/file.txt'))

我的代码目前:

// Upstream process creating a queue channel with one file
process A {
    output:
        file outA
    "echo 'Bonjour le monde !' > $outA"
}

// Queue channel triplication
outA.into {inB; inC; inD}

// Downstream processes all using the same file
process B {
    input:
        file inB
    "script of process B $inB"
}

process C {
    input:
        file inC
    "script of process C $inC"
}

process D {
    input:
        file inD
    "script of process D $inD"
}

我工作正常,但我想知道是否可以将队列通道outA转换为值通道,以便我可以使用相同的通道作为进程 B、C 和 D 的输入。

4

1 回答 1

3

您可以使用first()运算符来执行此操作,例如:

inX = outA.first()

process B {
    input:
        file inX
    "script of process B $inX"
}

etc

另请注意,当流程没有输入(如流程 A)时,其输出是隐含的价值通道。

于 2019-01-02T09:20:07.087 回答