预计tee操作将接受一个输入并返回两个副本输出。
我注意到了bonobo-etl features Tee nodes,但不清楚如何使用它们。
它们可以用于将运行中的图形分为两个方向吗? 还是它们打算用于Load类型的持久性操作,以在不停止该特定节点中的数据流的情况下使用?
答案 0 :(得分:0)
bonobo.Tee(f: Callable)
操作仅应用一个函数并将未经修改的流输入传递到流输出中。
尽管名称显然来自unix工具tee
(正如您所指出的),但它与the黑猩猩版本并不完全相似,一个输出是流输出,一个输出只是您使用的可调用对象。此可调用对象可能会也可能不会将数据发送到流(并且将数据发送到流目前尚不可靠)。
例如,如果您使用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
希望有帮助。