我有一个进程A
,它将文件输出到通道outA
中。我想将该文件用作3个下游进程B
,C
和D
的输入。由于默认创建的通道outA
是一个队列通道,所以我不能多次使用该文件(不同于值通道)。
当前,我使用into
运算符来复制通道outA
,如here所述(请参见下面的代码)。
我还知道您可以通过执行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。
答案 0 :(得分:0)
您可以使用first()
运算符来执行此操作,例如:
inX = outA.first()
process B {
input:
file inX
"script of process B $inX"
}
etc
还请注意,当一个流程没有输入(如流程A)时,其输出是隐式的值通道。