Ускорение работы программы благодаря многопроцессорности
Есть пример и он должен выполнять следующую математическую операцию ((A - SORT(B))*(А - SORT(C)).
Хочу понять, как же можна ускорить код программы благодаря многопоточности или многопроцессорности. Использование многопоточности(import Thread from threading) результата, скорее всего, не даст, так как есть GIL. В прошлый раз пытался использовать Process из multiprocessing, но прибавки с скорости вообще не получил, поэтому и обращаюсь с таким вопросом
В даном примере планируется вычислять part1 и part2 в разных процессах, но не знаю, как правильно это реализовать. Хотел бы получить пример как это всё завернуть в Process или куда-то ещё.
Кстати, думаю можно и создавать списки в разных потоках, но для этого нужно написать функцию, которая бы эти списки создавала.
import random
from time import time
# e = ((A - SORT(B))*(А - SORT(C))
def difference(array1, array2):
array3 = []
for i in range(len(array1)):
array3.append(array1[i] - array2[i])
return array3
tic = time()
A = [random.randint(0,1000000) for i in range(1000000)]
B = [random.randint(0,1000000) for i in range(1000000)]
C = [random.randint(0,1000000) for i in range(1000000)]
toc = time()
print("Время создания списков:", toc - tic)
# Время создания списков: 6.700585842132568
tic = time()
part1 = difference(A, sorted(B))
part2 = difference(A, sorted(C))
result = [a * b for a, b in zip(part1, part2)]
toc = time()
print("Время исполнения мат. операций:", toc - tic)
# Время исполнения мат. операций: 2.102379560470581