Как улучшить время одновременной обработки в этом коде?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как улучшить время одновременной обработки в этом коде?

Сообщение Anonymous »

Я запрограммировал следующий код на Python:

Код: Выделить всё

from concurrent.futures import ProcessPoolExecutor, \
ThreadPoolExecutor,   \
as_completed
import random
import time

def addS(v):
s=0
start=time.time()
for i in range(0,len(v)):
s=s+v[i]
start1=time.time()
print ("sec time ",start1-start," sum is ",s)

def dummyFun(l):
s=0
for i in range(0,len(l)):
s=s+l[i]
return s

def main():
workers=4
v = [random.randint(1,101) for _ in range(1000000)]
addS(v)
dim=(int)(len(v)/(workers*10))
s=0

chunks=(v[k:k+dim] for k in range(0,len(v),(int)(len(v)/(workers*10))))
start=time.time()

with ProcessPoolExecutor(max_workers=4) as executor:
futures=[executor.submit(dummyFun,chunk) for chunk in chunks]

start1=time.time()

for future in as_completed(futures):
s=s+future.result()
print ("concurrent time ",start1-start," sum is ",s)
когда я использую ProcessPoolExecutor(), мои результаты следующие:

Код: Выделить всё

       sec time  0.06529831886291504  sum is  51004089
concurrent time  0.5757372379302979   sum is  51004089
Я также перешел на ThreadPoolExecutor(), и результаты:

Код: Выделить всё

       sec time  0.06471061706542969  sum is  50981197
concurrent time  0.09298276901245117  sum is  50981197
Кроме того, когда я установил для параметра max_workers значение None, я получил следующие результаты:

Код: Выделить всё

       sec time  0.06425285339355469  sum is  50983899
concurrent time  0.09010934829711914  sum is  50983899
Как я могу улучшить время одновременной работы? потому что последовательное время все время ускоряется, или есть причина для этого?

Подробнее здесь: https://stackoverflow.com/questions/650 ... -this-code
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»