From ca651d41e486ff342ab284bc73ca14a820414db4 Mon Sep 17 00:00:00 2001 From: VerkhVektor <59034328+VerkhVektor@users.noreply.github.com> Date: Wed, 1 Jul 2020 15:12:00 +0500 Subject: [PATCH 1/3] HW 6 --- .../.idea/workspace.xml" | 174 ++++++++++++++++++ .../inspectionProfiles/profiles_settings.xml" | 6 + .../.idea/misc.xml" | 4 + .../.idea/modules.xml" | 8 + .../.idea/vcs.xml" | 6 + .../.idea/workspace.xml" | 127 +++++++++++++ ...0\264\320\260\320\275\320\270\320\265.iml" | 11 ++ .../task_5.py" | 43 +++++ .../task_6.py" | 68 +++++++ 9 files changed, 447 insertions(+) create mode 100644 "\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" create mode 100644 "\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/inspectionProfiles/profiles_settings.xml" create mode 100644 "\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/misc.xml" create mode 100644 "\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/modules.xml" create mode 100644 "\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/vcs.xml" create mode 100644 "\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" create mode 100644 "\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265.iml" diff --git "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" new file mode 100644 index 00000000..1ab722c7 --- /dev/null +++ "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1592240122892 + + + + + + + \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/inspectionProfiles/profiles_settings.xml" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/inspectionProfiles/profiles_settings.xml" new file mode 100644 index 00000000..105ce2da --- /dev/null +++ "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/inspectionProfiles/profiles_settings.xml" @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/misc.xml" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/misc.xml" new file mode 100644 index 00000000..a2e120dc --- /dev/null +++ "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/misc.xml" @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/modules.xml" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/modules.xml" new file mode 100644 index 00000000..81413de9 --- /dev/null +++ "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/modules.xml" @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/vcs.xml" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/vcs.xml" new file mode 100644 index 00000000..6c0b8635 --- /dev/null +++ "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/vcs.xml" @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" new file mode 100644 index 00000000..baaf9e3e --- /dev/null +++ "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1593594407458 + + + + + + + \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265.iml" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265.iml" new file mode 100644 index 00000000..67116063 --- /dev/null +++ "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265.iml" @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" index c6d2fdde..f7661e1c 100644 --- "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" +++ "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" @@ -8,3 +8,46 @@ Базовый список: [-55, -69, -5, 72, -41, -58, -79, 58, 74, 1] Максимальный отрицательный элемент в данном массиве = -5, его индекс 2 """ +<<<<<<< Updated upstream +======= +from random import randint +from memory_profiler import profile +from sys import getrefcount + + +@profile +def task_5(): + a = [randint(-100, 100) for i in range(100000)] + print(a) + b = [a[el] for el in range(len(a)) if a[el] < 0] + c = min(b, key=abs) + d = a.index(min(b, key=abs)) + print(f'Максимальный отрицательный элемент в данном массиве = {c}, его индекс {d}') + print(f'Количество ссылок на первый массив {getrefcount(a)}') + print(f'Количество ссылок на первый массив {getrefcount(b)}') + + +task_5() + +""" +Line # Mem usage Increment Line Contents +================================================ + 14 16.1 MiB 16.1 MiB @profile + 15 def task_5(): + 16 18.7 MiB 0.6 MiB a = [randint(-100, 100) for i in range(100000)] + 17 18.2 MiB 0.0 MiB print(a) + 18 18.6 MiB 0.1 MiB b = [a[el] for el in range(len(a)) if a[el] < 0] + 19 18.6 MiB 0.0 MiB c = min(b, key=abs) + 20 18.6 MiB 0.0 MiB d = a.index(min(b, key=abs)) + 21 18.6 MiB 0.0 MiB print(f'Максимальный отрицательный элемент в данном массиве = {c}, + его индекс {d}') + +По данным замера так же видно, чтобольшую часть памяти берёт на себя генератор списка, при небольших значениях массивов +трата памяти незначительна, использовав range = 10**6 показало относительно большое использвание памяти в первом +массиве, и незначительное во втором (во многом благодаря генератору списков). +Для оптимизации кода слеудет удалить ссылки на массив a и b командой del после выполнения кода. + +Не понятно, почему начальные 16.1 приросли до 18.7 при инкременте 0.6. Тоже погрешность? + +""" +>>>>>>> Stashed changes diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" index 923e89af..77471ae8 100644 --- "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" +++ "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" @@ -13,3 +13,71 @@ Массив: [88, 58, 50, 77, 49, 6, 42, 67, 14, 79] Сумма элементов между минимальным (6) и максимальным (88) элементами: 234 """ +<<<<<<< Updated upstream +======= +from random import randint +from memory_profiler import profile +from sys import getrefcount + + +@profile +def task_3_6(): + a = int(input('Введите количество элементов в массиве: ')) + b = [randint(0, 100) for el in range(a)] + print(b) + c = b.index(max(b)) + d = b.index(min(b)) + if abs(c - d) == 1: + print(f'Между максимальным элементом {max(b)} c индексом {c} и минимальным {min(b)} с индексом {d} нет чисел') + elif c < d: + print(f'Сумма элементов между минимальным {min(b)} и максимальным {max(b)} элементами: {sum(b[c:d])}') + elif c > d: + print(f'Сумма элементов между минимальным {min(b)} и максимальным {max(b)} элементами: {sum(b[d:c])}') + print(getrefcount(b)) + del b + +task_3_6() + +"""Line # Mem usage Increment Line Contents +================================================ + 20 16.2 MiB 16.2 MiB @profile + 21 def task_3_6(): + 22 16.2 MiB 0.0 MiB a = int(input('Введите количество элементов в массиве: ')) + 23 23.8 MiB 0.4 MiB b = [randint(0, 100) for el in range(a)] + 24 23.8 MiB 0.0 MiB print(b) + 25 23.8 MiB 0.0 MiB c = b.index(max(b)) + 26 23.8 MiB 0.0 MiB d = b.index(min(b)) + 27 23.8 MiB 0.0 MiB if abs(c - d) == 1: + 28 print(f'Между максимальным элементом {max(b)} c индексом {c} и + минимальным {min(b)} с индексом {d} нет чисел') + 29 23.8 MiB 0.0 MiB elif c < d: + 30 print(f'Сумма элементов между минимальным {min(b)} и + максимальным {max(b)} элементами: {sum(b[c:d])}') + 31 23.8 MiB 0.0 MiB elif c > d: + 32 23.8 MiB 0.0 MiB print(f'Сумма элементов между минимальным {min(b)} и + максимальным {max(b)} элементами: {sum(b[d:c])}') + + По данным измерений видно, что большой инкремент памяти бы использован при генерации списка. Но для этого пришлось + использовать range = 10**6. Для оптимизации использования памяти нужно удалить значение b после использования кода + del b. + + Line # Mem usage Increment Line Contents +================================================ + 20 16.2 MiB 16.2 MiB @profile + 21 def task_3_6(): + 22 16.2 MiB 0.0 MiB a = int(input('Введите количество элементов в массиве: ')) + 23 24.7 MiB 0.6 MiB b = [randint(0, 100) for el in range(a)] + 24 24.7 MiB 0.0 MiB print(b) + 25 24.7 MiB 0.0 MiB c = b.index(max(b)) + 26 24.7 MiB 0.0 MiB d = b.index(min(b)) + 27 24.7 MiB 0.0 MiB if abs(c - d) == 1: + 28 print(f'Между максимальным элементом {max(b)} c индексом {c} и минимальным {min(b)} с индексом {d} нет чисел') + 29 24.7 MiB 0.0 MiB elif c < d: + 30 print(f'Сумма элементов между минимальным {min(b)} и максимальным {max(b)} элементами: {sum(b[c:d])}') + 31 24.7 MiB 0.0 MiB elif c > d: + 32 24.7 MiB 0.0 MiB print(f'Сумма элементов между минимальным {min(b)} и максимальным {max(b)} элементами: {sum(b[d:c])}') + 33 17.1 MiB 0.0 MiB del b + +после добавления del память вернулась к прежнему значению, не считая погрешности профайлера. + """ +>>>>>>> Stashed changes From 07cc2f7192474ce63594e71923ba7605c62b3ab4 Mon Sep 17 00:00:00 2001 From: VerkhVektor <59034328+VerkhVektor@users.noreply.github.com> Date: Wed, 1 Jul 2020 15:13:09 +0500 Subject: [PATCH 2/3] Revert "HW 6" This reverts commit ca651d41e486ff342ab284bc73ca14a820414db4. --- .../.idea/workspace.xml" | 174 ------------------ .../inspectionProfiles/profiles_settings.xml" | 6 - .../.idea/misc.xml" | 4 - .../.idea/modules.xml" | 8 - .../.idea/vcs.xml" | 6 - .../.idea/workspace.xml" | 127 ------------- ...0\264\320\260\320\275\320\270\320\265.iml" | 11 -- .../task_5.py" | 43 ----- .../task_6.py" | 68 ------- 9 files changed, 447 deletions(-) delete mode 100644 "\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" delete mode 100644 "\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/inspectionProfiles/profiles_settings.xml" delete mode 100644 "\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/misc.xml" delete mode 100644 "\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/modules.xml" delete mode 100644 "\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/vcs.xml" delete mode 100644 "\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" delete mode 100644 "\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265.iml" diff --git "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" "b/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" deleted file mode 100644 index 1ab722c7..00000000 --- "a/\320\243\321\200\320\276\320\272 2. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1592240122892 - - - - - - - \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/inspectionProfiles/profiles_settings.xml" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/inspectionProfiles/profiles_settings.xml" deleted file mode 100644 index 105ce2da..00000000 --- "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/inspectionProfiles/profiles_settings.xml" +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/misc.xml" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/misc.xml" deleted file mode 100644 index a2e120dc..00000000 --- "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/misc.xml" +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/modules.xml" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/modules.xml" deleted file mode 100644 index 81413de9..00000000 --- "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/modules.xml" +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/vcs.xml" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/vcs.xml" deleted file mode 100644 index 6c0b8635..00000000 --- "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/vcs.xml" +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" deleted file mode 100644 index baaf9e3e..00000000 --- "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/workspace.xml" +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1593594407458 - - - - - - - \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265.iml" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265.iml" deleted file mode 100644 index 67116063..00000000 --- "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/.idea/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265.iml" +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" index f7661e1c..c6d2fdde 100644 --- "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" +++ "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_5.py" @@ -8,46 +8,3 @@ Базовый список: [-55, -69, -5, 72, -41, -58, -79, 58, 74, 1] Максимальный отрицательный элемент в данном массиве = -5, его индекс 2 """ -<<<<<<< Updated upstream -======= -from random import randint -from memory_profiler import profile -from sys import getrefcount - - -@profile -def task_5(): - a = [randint(-100, 100) for i in range(100000)] - print(a) - b = [a[el] for el in range(len(a)) if a[el] < 0] - c = min(b, key=abs) - d = a.index(min(b, key=abs)) - print(f'Максимальный отрицательный элемент в данном массиве = {c}, его индекс {d}') - print(f'Количество ссылок на первый массив {getrefcount(a)}') - print(f'Количество ссылок на первый массив {getrefcount(b)}') - - -task_5() - -""" -Line # Mem usage Increment Line Contents -================================================ - 14 16.1 MiB 16.1 MiB @profile - 15 def task_5(): - 16 18.7 MiB 0.6 MiB a = [randint(-100, 100) for i in range(100000)] - 17 18.2 MiB 0.0 MiB print(a) - 18 18.6 MiB 0.1 MiB b = [a[el] for el in range(len(a)) if a[el] < 0] - 19 18.6 MiB 0.0 MiB c = min(b, key=abs) - 20 18.6 MiB 0.0 MiB d = a.index(min(b, key=abs)) - 21 18.6 MiB 0.0 MiB print(f'Максимальный отрицательный элемент в данном массиве = {c}, - его индекс {d}') - -По данным замера так же видно, чтобольшую часть памяти берёт на себя генератор списка, при небольших значениях массивов -трата памяти незначительна, использовав range = 10**6 показало относительно большое использвание памяти в первом -массиве, и незначительное во втором (во многом благодаря генератору списков). -Для оптимизации кода слеудет удалить ссылки на массив a и b командой del после выполнения кода. - -Не понятно, почему начальные 16.1 приросли до 18.7 при инкременте 0.6. Тоже погрешность? - -""" ->>>>>>> Stashed changes diff --git "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" index 77471ae8..923e89af 100644 --- "a/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" +++ "b/\320\243\321\200\320\276\320\272 3.\320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_6.py" @@ -13,71 +13,3 @@ Массив: [88, 58, 50, 77, 49, 6, 42, 67, 14, 79] Сумма элементов между минимальным (6) и максимальным (88) элементами: 234 """ -<<<<<<< Updated upstream -======= -from random import randint -from memory_profiler import profile -from sys import getrefcount - - -@profile -def task_3_6(): - a = int(input('Введите количество элементов в массиве: ')) - b = [randint(0, 100) for el in range(a)] - print(b) - c = b.index(max(b)) - d = b.index(min(b)) - if abs(c - d) == 1: - print(f'Между максимальным элементом {max(b)} c индексом {c} и минимальным {min(b)} с индексом {d} нет чисел') - elif c < d: - print(f'Сумма элементов между минимальным {min(b)} и максимальным {max(b)} элементами: {sum(b[c:d])}') - elif c > d: - print(f'Сумма элементов между минимальным {min(b)} и максимальным {max(b)} элементами: {sum(b[d:c])}') - print(getrefcount(b)) - del b - -task_3_6() - -"""Line # Mem usage Increment Line Contents -================================================ - 20 16.2 MiB 16.2 MiB @profile - 21 def task_3_6(): - 22 16.2 MiB 0.0 MiB a = int(input('Введите количество элементов в массиве: ')) - 23 23.8 MiB 0.4 MiB b = [randint(0, 100) for el in range(a)] - 24 23.8 MiB 0.0 MiB print(b) - 25 23.8 MiB 0.0 MiB c = b.index(max(b)) - 26 23.8 MiB 0.0 MiB d = b.index(min(b)) - 27 23.8 MiB 0.0 MiB if abs(c - d) == 1: - 28 print(f'Между максимальным элементом {max(b)} c индексом {c} и - минимальным {min(b)} с индексом {d} нет чисел') - 29 23.8 MiB 0.0 MiB elif c < d: - 30 print(f'Сумма элементов между минимальным {min(b)} и - максимальным {max(b)} элементами: {sum(b[c:d])}') - 31 23.8 MiB 0.0 MiB elif c > d: - 32 23.8 MiB 0.0 MiB print(f'Сумма элементов между минимальным {min(b)} и - максимальным {max(b)} элементами: {sum(b[d:c])}') - - По данным измерений видно, что большой инкремент памяти бы использован при генерации списка. Но для этого пришлось - использовать range = 10**6. Для оптимизации использования памяти нужно удалить значение b после использования кода - del b. - - Line # Mem usage Increment Line Contents -================================================ - 20 16.2 MiB 16.2 MiB @profile - 21 def task_3_6(): - 22 16.2 MiB 0.0 MiB a = int(input('Введите количество элементов в массиве: ')) - 23 24.7 MiB 0.6 MiB b = [randint(0, 100) for el in range(a)] - 24 24.7 MiB 0.0 MiB print(b) - 25 24.7 MiB 0.0 MiB c = b.index(max(b)) - 26 24.7 MiB 0.0 MiB d = b.index(min(b)) - 27 24.7 MiB 0.0 MiB if abs(c - d) == 1: - 28 print(f'Между максимальным элементом {max(b)} c индексом {c} и минимальным {min(b)} с индексом {d} нет чисел') - 29 24.7 MiB 0.0 MiB elif c < d: - 30 print(f'Сумма элементов между минимальным {min(b)} и максимальным {max(b)} элементами: {sum(b[c:d])}') - 31 24.7 MiB 0.0 MiB elif c > d: - 32 24.7 MiB 0.0 MiB print(f'Сумма элементов между минимальным {min(b)} и максимальным {max(b)} элементами: {sum(b[d:c])}') - 33 17.1 MiB 0.0 MiB del b - -после добавления del память вернулась к прежнему значению, не считая погрешности профайлера. - """ ->>>>>>> Stashed changes From ff657d64efe5cf15d99cd32c87c8a692f115a6b2 Mon Sep 17 00:00:00 2001 From: VerkhVektor <59034328+VerkhVektor@users.noreply.github.com> Date: Wed, 1 Jul 2020 15:16:49 +0500 Subject: [PATCH 3/3] HW 6 --- .../task_1.py" | 69 +++++++++++++++++++ .../task_1_2.py" | 40 +++++++++++ 2 files changed, 109 insertions(+) create mode 100644 "\320\243\321\200\320\276\320\272 6. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1_2.py" diff --git "a/\320\243\321\200\320\276\320\272 6. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" "b/\320\243\321\200\320\276\320\272 6. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" index 0bbcc43f..08f25f15 100644 --- "a/\320\243\321\200\320\276\320\272 6. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" +++ "b/\320\243\321\200\320\276\320\272 6. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1.py" @@ -12,3 +12,72 @@ ВНИМАНИЕ: ЗАДАНИЯ, В КОТОРЫХ БУДУТ ГОЛЫЕ ЦИФРЫ ЗАМЕРОВ (БЕЗ АНАЛИТИКИ) БУДУТ ПРИНИМАТЬСЯ С ОЦЕНКОЙ УДОВЛЕТВОРИТЕЛЬНО """ +from random import randint +from memory_profiler import profile +from sys import getrefcount + + +@profile +def task_3_6(): + a = int(input('Введите количество элементов в массиве: ')) + b = [randint(0, 100) for el in range(a)] + print(b) + c = b.index(max(b)) + d = b.index(min(b)) + if abs(c - d) == 1: + print(f'Между максимальным элементом {max(b)} c индексом {c} и минимальным {min(b)} с индексом {d} нет чисел') + elif c < d: + print(f'Сумма элементов между минимальным {min(b)} и максимальным {max(b)} элементами: {sum(b[c:d])}') + elif c > d: + print(f'Сумма элементов между минимальным {min(b)} и максимальным {max(b)} элементами: {sum(b[d:c])}') + print(getrefcount(b)) + del b + + +task_3_6() + +"""Line # Mem usage Increment Line Contents +================================================ + 20 16.2 MiB 16.2 MiB @profile + 21 def task_3_6(): + 22 16.2 MiB 0.0 MiB a = int(input('Введите количество элементов в массиве: ')) + 23 23.8 MiB 0.4 MiB b = [randint(0, 100) for el in range(a)] + 24 23.8 MiB 0.0 MiB print(b) + 25 23.8 MiB 0.0 MiB c = b.index(max(b)) + 26 23.8 MiB 0.0 MiB d = b.index(min(b)) + 27 23.8 MiB 0.0 MiB if abs(c - d) == 1: + 28 print(f'Между максимальным элементом {max(b)} c индексом {c} и + минимальным {min(b)} с индексом {d} нет чисел') + 29 23.8 MiB 0.0 MiB elif c < d: + 30 print(f'Сумма элементов между минимальным {min(b)} и + максимальным {max(b)} элементами: {sum(b[c:d])}') + 31 23.8 MiB 0.0 MiB elif c > d: + 32 23.8 MiB 0.0 MiB print(f'Сумма элементов между минимальным {min(b)} и + максимальным {max(b)} элементами: {sum(b[d:c])}') + + По данным измерений видно, что большой инкремент памяти бы использован при генерации списка. Но для этого пришлось + использовать range = 10**6. Для оптимизации использования памяти нужно удалить значение b после использования кода + del b. + + Line # Mem usage Increment Line Contents +================================================ + 20 16.2 MiB 16.2 MiB @profile + 21 def task_3_6(): + 22 16.2 MiB 0.0 MiB a = int(input('Введите количество элементов в массиве: ')) + 23 24.7 MiB 0.6 MiB b = [randint(0, 100) for el in range(a)] + 24 24.7 MiB 0.0 MiB print(b) + 25 24.7 MiB 0.0 MiB c = b.index(max(b)) + 26 24.7 MiB 0.0 MiB d = b.index(min(b)) + 27 24.7 MiB 0.0 MiB if abs(c - d) == 1: + 28 print(f'Между максимальным элементом {max(b)} c индексом {c} и + минимальным {min(b)} с индексом {d} нет чисел') + 29 24.7 MiB 0.0 MiB elif c < d: + 30 print(f'Сумма элементов между минимальным {min(b)} и + максимальным {max(b)} элементами: {sum(b[c:d])}') + 31 24.7 MiB 0.0 MiB elif c > d: + 32 24.7 MiB 0.0 MiB print(f'Сумма элементов между минимальным {min(b)} и + максимальным {max(b)} элементами: {sum(b[d:c])}') + 33 17.1 MiB 0.0 MiB del b + +после добавления del память вернулась к прежнему значению, не считая погрешности профайлера. + """ \ No newline at end of file diff --git "a/\320\243\321\200\320\276\320\272 6. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1_2.py" "b/\320\243\321\200\320\276\320\272 6. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1_2.py" new file mode 100644 index 00000000..342d72f3 --- /dev/null +++ "b/\320\243\321\200\320\276\320\272 6. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/task_1_2.py" @@ -0,0 +1,40 @@ +from random import randint +from memory_profiler import profile +from sys import getrefcount + + +@profile +def task_5(): + a = [randint(-100, 100) for i in range(100000)] + print(a) + b = [a[el] for el in range(len(a)) if a[el] < 0] + c = min(b, key=abs) + d = a.index(min(b, key=abs)) + print(f'Максимальный отрицательный элемент в данном массиве = {c}, его индекс {d}') + print(f'Количество ссылок на первый массив {getrefcount(a)}') + print(f'Количество ссылок на первый массив {getrefcount(b)}') + + +task_5() + +""" +Line # Mem usage Increment Line Contents +================================================ + 14 16.1 MiB 16.1 MiB @profile + 15 def task_5(): + 16 18.7 MiB 0.6 MiB a = [randint(-100, 100) for i in range(100000)] + 17 18.2 MiB 0.0 MiB print(a) + 18 18.6 MiB 0.1 MiB b = [a[el] for el in range(len(a)) if a[el] < 0] + 19 18.6 MiB 0.0 MiB c = min(b, key=abs) + 20 18.6 MiB 0.0 MiB d = a.index(min(b, key=abs)) + 21 18.6 MiB 0.0 MiB print(f'Максимальный отрицательный элемент в данном массиве = {c}, + его индекс {d}') + +По данным замера так же видно, чтобольшую часть памяти берёт на себя генератор списка, при небольших значениях массивов +трата памяти незначительна, использовав range = 10**6 показало относительно большое использвание памяти в первом +массиве, и незначительное во втором (во многом благодаря генератору списков). +Для оптимизации кода слеудет удалить ссылки на массив a и b командой del после выполнения кода. + +Не понятно, почему начальные 16.1 приросли до 18.7 при инкременте 0.6. Тоже погрешность? + +""" \ No newline at end of file