Следующий поток: возможно ли преобразовать канал очереди в канал значений?
У меня есть процесс A
который выводит файл в канал outA
, Я хочу использовать этот файл в качестве входных данных для 3 последующих процессов B
, C
а также 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.
1 ответ
Вы можете использовать first()
оператор, чтобы сделать это, например:
inX = outA.first()
process B {
input:
file inX
"script of process B $inX"
}
etc
Также обратите внимание, что когда у процесса нет входных данных (например, у процесса A), его выходные данные являются неявно ценными каналами.