間に構造化データを渡すノードのネットワークがあります。私のサブ問題には、この分岐があります-ノードの線形シーケンス:
nodes = [source, n1, n2, n3, n4]
最初のノードはジェネレーターで、他の各ノードは入力ノードから値を取得し、出力値を提供します。現在の実装は、パイプからの単純な get() とパイプへの put() であり、ノードごとに個別のスレッドがあります (これには理由があります)。yield
-ing イテレータに変更したい。
そして、次の方法で評価したいと思います(ノードを呼び出し可能と見なす場合):
for result in n4(n3(n2(n1(source()))):
print result
次のような評価コンテキストの構築を想像します。
context = src
for node in nodes[1:]:
context = pipe(context, node)
for result in context:
print result
制限:
ノードが別のスレッドにある可能性があるため、ネストされていない、他の方法でデータをパイプする、ノードを個別に使用できるようにしたいと考えています。例: [source, n1,n2]
1 つのスレッド (入れ子になっている可能性があります) と、もう 1 つのスレッド (入れ子になっている可能性があります) では、 と の間で[n3, n4]
データがパイプされます。ケース: この方法でブランチをグループ化したい非線形ノード グラフがあるかもしれません。n2
n3
node
計算状態を保持するクラスである必要があります
context
との実装はどのpipe(context, node)
ように見えるでしょうか? または、別の方法で解決できる場合、何かヒントはありますか?
yield from
Python 3.3 (PEP380)で私のケースを何らかの方法で助けることができますか?