プロセス間でデータ構造を共有するにはどうすればよいですか?
パイプライン。
origin.py | process1.py | process2.py | process3.py
各計算が次の形式の個別のプロセスになるように、プログラムを分割します。
def transform1( piece ):
Some transformation or calculation.
テストでは、このように使用できます。
def t1( iterable ):
for piece in iterable:
more_data = transform1( piece )
yield NewNamedTuple( piece, more_data )
単一のプロセスで計算全体を再現するには、これを行うことができます。
for x in t1( t2( t3( the_whole_structure ) ) ):
print( x )
わずかなファイル I/O で各変換をラップできます。これには Pickle がうまく機能しますが、他の表現 (JSON や YAML など) もうまく機能します。
while True:
a_piece = pickle.load(sys.stdin)
more_data = transform1( a_piece )
pickle.dump( NewNamedTuple( piece, more_data ) )
各処理ステップは、独立した OS レベルのプロセスになります。これらは同時に実行され、すぐにすべての OS レベルのリソースを消費します。
ロックを使用せずに遅延評価の問題を処理する方法はありますか (複数のプロセスが同じ値を書き込みます)。
パイプライン。