のような株式ティッカーを含むベクターがtickers = ['AAPL','XOM','GOOG']
あり、「従来の」python プログラムでは、このtickers
ベクターをループし、 のようなティッカー文字列を 1 つ選択し、株式リターンAAPL
を含む csv ファイルをインポートAAPL
し、共通関数への入力としてリターンを使用します。最後に、csv ファイルを出力として生成します。4000 を超えるティッカーがあり、各ティッカーに適用する関数の処理に時間がかかります。mpi4py
ジョブごとに約 100 個のプロセッサにアクセスできるパッケージを使用して、コンピューター クラスターにアクセスできます。私はPythonでこのmpi
例をよく理解しています(そして実装できました) :
from mpi4py import MPI
comm = MPI.COMM_WORLD
size = comm.Get_size()
rank = comm.Get_rank()
if rank == 0:
data = [i for i in range(8)]
# dividing data into chunks
chunks = [[] for _ in range(size)]
for i, chunk in enumerate(data):
chunks[i % size].append(chunk)
else:
data = None
chunks = None
data = comm.scatter(chunks, root=0)
print str(rank) + ': ' + str(data)
[cha@cluster] ~/utils> mpirun -np 3 ./mpi.py
2: [2, 5]
0: [0, 3, 6]
1: [1, 4, 7]
したがって、この例では、サイズ 8 のデータ ベクトルがあり、各プロセッサ (合計 3 つ) に同じ数のデータ要素を割り当てます。上記の同様の例を使用して、各プロセッサに 1 つの株式ティッカーを割り当て、ティッカーごとに実行する必要がある関数を適用するにはどうすればよいですか? tickers
プロセッサが解放されたら、ベクトルに戻っticker
てまだ処理されていないa を処理するように python に伝えるにはどうすればよいですか?