Ускорение работы программы благодаря многопроцессорности

Есть пример и он должен выполнять следующую математическую операцию ((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

Ответы (0 шт):