Операция bonobo.Tee(f: Callable)
просто применяет функцию и передает входной поток без изменений в выходной поток.
Хотя название, очевидно, происходит от инструмента Unix tee
(как вы указали), оно не совсем похоже на то, как в версии bonobo, один выход является выходом потока, а один - только вызываемым вами. Этот вызываемый может отправлять или не отправлять данные в поток (а отправка данных в поток пока что хакерская).
Например, если вы используете Tee(print)
, то поток будет передан как на выход, так и на print
.
В качестве другого, более реалистичного примера вы сможете выполнить следующее:
import bonobo
import queue
output_queue = queue.Queue()
def get_graph():
graph = bonobo.Graph()
graph >> range(100) >> bonobo.Tee(output_queue.put) >> print
return graph
if __name__ == "__main__":
with bonobo.parse_args() as options:
bonobo.run(get_graph())
while True:
try:
print("out:", output_queue.get_nowait())
except queue.Empty:
break
Надеюсь, это поможет.