Serial Program работает лучше, чем Parallel Program - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь провести сравнение между последовательной и параллельной обработкой при обработке изображений.Но по какой-то странной причине моя параллельная программа работает намного медленнее, чем последовательная программа.Может кто-нибудь сказать мне, в чем может быть проблема?

Параллельный код: я разделил каждую задачу как отдельную функцию для каждого потока.

def task2():
global t_end
print("Task 2 started...")

filter=[1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9]
for i in range(1, height - 2):
    for j in range(1, width - 2):
        # print i,j,img[i][j]
        ay = img[i - 1][j - 1] * float(filter[0])
        by = img[i][j - 1] * float(filter[1])
        cy = img[i + 1][j - 1] * float(filter[2])
        dy = img[i - 1][j] * float(filter[3])
        ey = img[i][j] * float(filter[4])
        fy = img[i + 1][j] * float(filter[5])
        gy = img[i - 1][j + 1] * float(filter[6])
        hy = img[i][j + 1] * float(filter[7])
        iy = img[i + 1][j + 1] * float(filter[8])

        Gy = ay + by + cy + dy + ey + fy + gy + hy + iy
        img_op2[i][j] = Gy
print("Active Threads :", threading.activeCount())
cv2.imshow('Blurred op', img_op2)
temp_time = time.time()
if (temp_time > t_end):
    t_end = temp_time

И я реализовал потоки следующим образом:

t1=threading.Thread(target=task1)
t2=threading.Thread(target=task2)
t3=threading.Thread(target=task3)
t4=threading.Thread(target=task4)

t_start=time.time()
t1.start()
t2.start()
t3.start()
t4.start()

Мой параллельный код работает медленнее, чем последовательный код по некоторым причинам.Любое предложение будет оценено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...