Целью этой программы является вычисление loop_random
для цикла num
. Я хочу рассчитать 4 случайных разных num/4
с 4 процессорами параллельно и в конце суммирования, чтобы дать u_total
. Но проблема в том, что я вижу все 4 процессора в действии, конечный результат вычисляется в 4 раза в том же наборе num/4
. Но я хочу рассчитать loop_random
для 4 различных случайных массивов. Вот фрагмент части кода, над которым я работаю. ,Получение результатов от multiprocessing.process для цикла
from numpy import *
import multiprocessing as mp
from multiprocessing import Process, Queue
num = 5000
def loop_random(num, out):
n = 1
total = zeros(((100.,100.,100.)), dtype='float')
while n<= num:
x, y , z = random.rand(100), random.rand(100), random.rand(100) #some random numbers
result = x**2 + y**2 + z**2
total = total + result
n += 1
out.put(total)
if __name__=='__main__':
q1 = mp.Queue()
q2 = mp.Queue()
q3 = mp.Queue()
q4 = mp.Queue()
p1 = mp.Process(target = loop_random, args=(num/4, q1))
p2 = mp.Process(target = loop_random, args=(num/4, q2))
p3 = mp.Process(target = loop_random, args=(num/4, q3))
p4 = mp.Process(target = loop_random, args=(num/4, q4))
p1.start()
p2.start()
p3.start()
p4.start()
u_total_proc1 = q1.get()
u_total_proc2 = q2.get()
u_total_proc3 = q3.get()
u_total_proc4 = q4.get()
p1.join()
p2.join()
p3.join()
p4.join()
u_total = u_total_proc1 + u_total_proc2 + u_total_proc3 + u_total_proc4
print u_total
Любые предложения приветствуются. Проблема в том, что это правильный способ многопроцессорности? Очередь каждой очереди вычисляет один и тот же результат и не сохраняется, или каждый процессор вычисляет разные результаты и сохраняется? Большое спасибо за вашу помощь. Пожалуйста, поправьте меня, если что-то не так в том, что я сказал.
Это может помочь, если вы вывесили рабочий пример, есть много синтаксических ошибок, которые мешают ваш образец от запуска – bj0
О, я сожалею. Поскольку это было частью программы, я не смотрел. Сейчас я отредактирую его. Благодарю. – geekygeek
Теперь его рабочий :) Пожалуйста, проверьте – geekygeek