diff --git a/morozov_vladimir_lab_5/app.py b/morozov_vladimir_lab_5/app.py
new file mode 100644
index 0000000..dc2a4f2
--- /dev/null
+++ b/morozov_vladimir_lab_5/app.py
@@ -0,0 +1,60 @@
+import math
+from multiprocessing import Pool
+import numpy as np
+from datetime import datetime
+
+
+# Метод по умножение определенных строк 1й матрицы на столбцы 2й матрицы
+def work(start, end, fst, sec):
+    result = []
+    for i1 in range(start, end):
+        str = np.zeros(len(sec[0]))
+        for j2 in range(0, len(sec[0])):
+            mul = np.zeros(len(sec[0]))
+            for i2 in range(0, len(sec)):
+                mul[i2] = fst[i1][i2] * sec[i2][j2]
+            str[j2] = np.sum(mul)
+        result.append(str.tolist())
+
+    return result
+
+
+if __name__ == '__main__':
+
+    sizes = [100, 300]
+    threads_counts = [1, 2, 4, 8]
+
+    for size_arrays in sizes:
+
+        fst = np.random.randint(1, 30, size=(size_arrays, size_arrays))
+        sec = np.random.randint(1, 30, size=(size_arrays, size_arrays))
+        result = np.ones((size_arrays, size_arrays,), dtype='int32')
+
+        for thread_count in threads_counts:
+            step = math.floor(size_arrays / thread_count)
+            remaining_lines = size_arrays % thread_count
+
+            steps = [step] * thread_count
+
+            for i in range(0, len(steps)):
+                steps[i] = steps[i] + math.ceil(remaining_lines / thread_count)
+                remaining_lines -= math.ceil(remaining_lines / thread_count)
+                if remaining_lines == 0:
+                    break
+
+            # Создаем список кусочков массива
+            args = []
+            i = 0
+            for step in steps:
+                args.append([i, i + step, fst, sec])
+                i += step
+            pool = Pool(thread_count)
+            # начинаем умножение
+            startTime = datetime.now()
+            result = pool.starmap(work, args)
+            endTime = datetime.now()
+            print(f"Size of arrays: {size_arrays}")
+            print(f"Count of threads: {thread_count}")
+            print("Time work:", endTime - startTime)
+            print("--------------")
+        print("--------------------------------------------------------")
diff --git a/morozov_vladimir_lab_5/images/image1.png b/morozov_vladimir_lab_5/images/image1.png
new file mode 100644
index 0000000..ed06d63
Binary files /dev/null and b/morozov_vladimir_lab_5/images/image1.png differ
diff --git a/morozov_vladimir_lab_5/images/image2.png b/morozov_vladimir_lab_5/images/image2.png
new file mode 100644
index 0000000..57f6257
Binary files /dev/null and b/morozov_vladimir_lab_5/images/image2.png differ
diff --git a/morozov_vladimir_lab_5/images/image3.png b/morozov_vladimir_lab_5/images/image3.png
new file mode 100644
index 0000000..3c86cc7
Binary files /dev/null and b/morozov_vladimir_lab_5/images/image3.png differ
diff --git a/morozov_vladimir_lab_5/readme.md b/morozov_vladimir_lab_5/readme.md
new file mode 100644
index 0000000..9e2a19b
--- /dev/null
+++ b/morozov_vladimir_lab_5/readme.md
@@ -0,0 +1,28 @@
+# Лабораторная работа №5 - Вспоминаем математику или параллельное перемножение матриц
+
+## Разработка приложения
+
+Для разработки был выбран язык Python. Для разработки приложения были использованы библиотки:
+- Numpy - библиотека для работы с массивами
+- Multiprocessing - библиотека для запуска нескольких процеесов, что позволяет паралельно запускать функции
+
+Суть алгоритма:
+- Задаем размер матриц
+- Задаем кол-во потоков, которые будут работать паралельно
+- Разбиваем 1ю матрицу на матрицы поменьше, кол-во которых = кол-во потоков. Каждый поток будет обрабатывать свой кусок изначальной матрицы, умножая строки своего кусочка на столбцы 2й матрицы
+- Объединяем результаты работы всех потоков
+
+## Тестирование
+#### Тестирование матриц 100х100
+![image1.png](images%2Fimage1.png)
+#### Тестирование матриц 300х300
+![image2.png](images%2Fimage2.png)
+#### Тестирование матриц 500х500
+![image3.png](images%2Fimage3.png)
+## Вывод
+Паралельной алгоритм умножения матриц работает эффективнее, чем обычный.
+
+
+
+## Запись тестирования
+Работа приложения представлена в [видео](https://disk.yandex.ru/i/YpNEhFwbDh865A)
\ No newline at end of file