2017-04-19 2 views
1

Ich brauche zwei (A & B) große zufällige Größe (10^7, 10^12) von Vektor mit Hilfe von zwei Threads in Python oder Multiprocessing. und dann muss es in C gespeichert werden. Ich muss auch meinen Code takten. und müssen endlich die Mindest- und Durchschnittszahl aus dem letzten Vektor finden. Ich habe so viele Dinge ausprobiert und arbeite gerade an einem Anaconda Jupyter Notebook. Es akzeptiert den Code, gibt mir aber keine Ausgabe.Threading/Multiprocessing/Warteschlange?

dies ist mein Code

"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

Bitte setzen Sie Ihren Code in Ihre Frage. – martineau

Antwort

0

Sie nicht diese Art von Operationen mit Multiprozessing tun können, weil sie (in Python) Prozesse getrennt sind und alles, was zwischen ihnen nicht teilen. Das bedeutet, dass Ihre global Variable nur im zweiten Prozess p1 global ist, weshalb Ihre add_result`variable immer noch gleich "[]" ist.

Bitte fügen Sie Ihren Code in Ihre Frage, damit wir Ihnen helfen können, es neu zu schreiben.

Sie sollten auch einen Blick auf Pythons GIL werfen, um besser zu verstehen, warum Prozesse (und Threads) Ihnen bei Ihrer Aufgabe nicht helfen können.