計算速度を下げるためにPythonでマルチプロセッシングを構築しようとしていますが、マルチプロセッシングの後、全体の計算速度が大幅に低下したようです。4 つの異なるプロセスを作成し、dataFrame を 4 つの異なるデータフレームに分割しました。これが各プロセスへの入力になります。各プロセスのタイミングを計った後、オーバーヘッド コストが大きいように見え、これらのオーバーヘッド コストを削減する方法があるかどうか疑問に思っていました。
私はwindows7、python 3.5を使用しており、私のマシンには8つのコアがあります。
def doSomething(args, dataPassed,):
processing data, and calculating outputs
def parallelize_dataframe(df, nestedApply):
df_split = np.array_split(df, 4)
pool = multiprocessing.Pool(4)
df = pool.map(nestedApply, df_split)
print ('finished with Simulation')
time = float((dt.datetime.now() - startTime).total_seconds())
pool.close()
pool.join()
def nestedApply(df):
func2 = partial(doSomething, args=())
res = df.apply(func2, axis=1)
res = [output Tables]
return res
if __name__ == '__main__':
data = pd.read_sql_query(query, conn)
parallelize_dataframe(data, nestedApply)