Я создал две версии программы для сложения чисел массива: одна версия использует параллельное программирование, а другая - последовательное. Проблема в том, что я не могу заставить параллельную программу возвращать более быстрое время обработки. В настоящее время я использую Windows 8 и Python 3.x. Мой код:
from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor, as_completed
import random
import time
def fun(v):
s=0
for i in range(0,len(v)):
s=s+l[i]
return s
def sumSeq(v):
s=0
start=time.time()
for i in range(0,len(v)):
s=s+v[i]
start1=time.time()
print ("time seq ",start1-start," sum = ",s)
def main():
workers=4
vector = [random.randint(1,101) for _ in range(1000000)]
sumSeq(vector)
dim=(int)(len(vector)/(workers*10))
s=0
chunks=(vector[k:k+dim] for k in range(0,len(vector),(int)(len(vector)/(workers*10))))
start=time.time()
with ThreadPoolExecutor(max_workers=workers) as executor:
futures=[executor.submit(fun,chunk) for chunk in chunks]
start1=time.time()
for future in as_completed(futures):
s=s+future.result()
print ("concurrent time ",start1-start," sum = ",s)
Проблема в том, что я получаю следующий ответ:
time sec 0.048101186752319336 sum = 50998349
concurrent time 0.059157371520996094 sum = 50998349
Я не могу заставить параллельную версию работать быстрее, я изменил размер фрагментов и количество максимальных рабочих к None, но ничего не работает. Что я делаю не так? Я читал, что проблема может заключаться в создании процессов, так как я могу это исправить простым способом?
Спасибо