Последовательная задача:
Код: Выделить всё
import multiprocessing
import time
v1 = [0] * 5000000
v2 = [0] * 5000000
def worker1(nums):
global v1
for i in range(nums):
v1[i] = i*i
def worker2(nums):
global v2
for i in range(nums):
v2[i] = i*i*i
start = time.time()
worker1(5000000)
worker2(5000000)
end = time.time()
print(end-start)
Та же задача с использованием многопроцессорности:
Код: Выделить всё
import multiprocessing
import time
def worker1(nums,v1):
for i in range(nums):
v1[i] = i*i
def worker2(nums,v2):
for i in range(nums):
v2[i] = i*i*i
v1 = multiprocessing.Array('i',5000000)
v2 = multiprocessing.Array('i',5000000)
p1 = multiprocessing.Process(target=worker1, args = (5000000,v1))
p2 = multiprocessing.Process(target=worker2, args = (5000000,v2))
start = time.time()
p1.start()
p2.start()
p1.join()
p2.join()
end = time.time()
print(end-start)
Разница между ними очень существенная, хотя я это понимаю в многопроцессорной обработке есть некоторые накладные расходы, она должна была быть быстрее, чем последовательная, верно?
Пожалуйста, дайте мне знать, если я делаю что-то неправильно или есть глупая ошибка, которую следует исправить .
Подробнее здесь: https://stackoverflow.com/questions/792 ... processing