私は勾配降下を行っています(正確には100回の反復)。各データ ポイントは並行して分析でき、50 個のデータ ポイントがあります。コアが 4 つあるので、 を使用して 4 つのワーカーのプールを作成しますmultiprocessing.Pool
。プログラムのコアは次のようになります。
# Read the sgf files (total 50)
(intermediateBoards, finalizedBoards) = read_sgf_files()
# Create a pool of processes to analyze game boards in parallel with as
# many processes as number of cores
pool = Pool(processes=cpu_count())
# Initialize the parameter object
param = Param()
# maxItr = 100 iterations of gradient descent
for itr in range(maxItr):
args = []
# Prepare argument vector for each file
for i in range(len(intermediateBoards)):
args.append((intermediateBoards[i], finalizedBoards[i], param))
# 4 processes analyze 50 data points in parallel in each iteration of
# gradient descent
result = pool.map_async(train_go_crf_mcmc, args)
ここで、 function の定義を含めていませんが、関数train_go_crf
の最初の行は print ステートメントです。したがって、この関数を実行すると、print ステートメントが 100*50 回実行されるはずです。しかし、そうはなりません。さらに、さまざまな回数のコンソール出力が得られます。
どうしたの?