Я пытаюсь провести сравнение между последовательной и параллельной обработкой при обработке изображений.Но по какой-то странной причине моя параллельная программа работает намного медленнее, чем последовательная программа.Может кто-нибудь сказать мне, в чем может быть проблема?
Параллельный код: я разделил каждую задачу как отдельную функцию для каждого потока.
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()
Мой параллельный код работает медленнее, чем последовательный код по некоторым причинам.Любое предложение будет оценено.