私はPythonでマルチプロセッシングコーディングをするのに数時間を費やしました。 documentのコードを読んだ後、私は以下のコードを書いた。私の計画は、2つのグローバルデータフレームに値を一緒に追加し、その結果を辞書に割り当てることです。辞書とデータフレームでマルチプロセッシングのPythonコードを書く方法
from multiprocessing import Process, Manager
import pandas as pd
import numpy as np
import time
def f(d):
for i in C:
d[i] = A.loc[i].sum() + B.loc[i].sum()
C = [10,20,30]
A = pd.DataFrame(np.matrix('1,2;3,4;5,6'), index = C, columns = ['A','B'])
B = pd.DataFrame(np.matrix('3,4;5,4;5,2'), index = C, columns = ['A','B'])
if __name__ == '__main__':
manager = Manager()
d = manager.dict()
d = dict([(c, 0) for c in C])
t0 = time.clock()
p = Process(target=f, args=(d,))
p.start()
p.join()
print time.clock()-t0, 'seconds processing time'
print d
d = dict([(c, 0) for c in C])
t0 = time.clock()
f(d)
print time.clock()-t0, 'seconds processing time'
print d
ない以下に示す私のLinuxサーバ、の結果が私の期待:
0.0秒の処理時間
{10:0、20:0、30:0}
0.0秒の処理時間
{10:10,20:16、30:18}
マルチプロセッシングの部分は2つのデータフレームの値を追加しませんでしたようです。あなたは私にいくつかのヒントを教えてもらえますか?
ありがとうございます。
'Process'重複メモリ、dは異なるでしょう。その間、 –
の 'threading.Thread'を試してください。私はその文書をチェックしました。あなたはほとんど正しいです。私の答えを確認してください –