2017-04-19 5 views
1

Pythonまたはマルチプロセッシングで2つのスレッドを使用して2つの大きなランダムサイズ(10^7、10^12)のベクトルを追加する必要があります。 Cでそれを保存する必要があります。私は自分のコードもTimeにする必要があります。最終的に最終ベクトルから最小値と平均値を見つける必要があります。私は非常に多くのことを試み、現在Anaconda Jupyterノートブックで作業しています。それはコードを受け入れますが、私には何の出力も与えません。 スレッド/マルチプロセッシング/キュー?

この

は(Pythonで)プロセスが分離されていると自分自身との間には何も共有していないので、あなたは、マルチプロセッシングと操作のこの種を行うことができない私のコード

"import time 
import multiprocessing 
import numpy as np 
import threading 
add_result = [] 
a = np.random.rand(10000000) 
b = np.random.rand(10000000) 
def calc_add(numbers): 
global add_results 
for n in numbers: 
    print('add' + str(a+b)) 
    add_result.append(a+b) 
    print('within a process result' +str(add_result)) 
    time.Time = start_time 
if __name__=="__main__": 
arr = a+b 
p1 = multiprocessing.Process(target = calc_add, args = (arr)) 
p2 = multiprocessing.Process(target = calc_add, args = (arr)) 
p1.start() 
p2.start() 
p1.join() 
p2.join() 

print("result" +str(add_result)) 
print("done!") 
+2

あなたのコードを質問に入れてください。 – martineau

答えて

0

です。つまり、global変数が2番目のプロセスp1でグローバルにしか存在しないため、add_result変数がまだ[[] "に等しい理由です。

あなたの質問にあなたのコードを追加して、私たちがあなたの書き直しを手助けできるようにしてください。

また、プロセス(とスレッド)があなたの仕事にあなたを助けない理由をよく理解するために、PythonのGILを見てください。