Огляд скриптовых мов - Python
Приклади збереження даних Приклади збереження данихУ порівнянні з pickle або YAML для ініціалізації роботи з ZODB потрібно написати на парі рядків програмного коду більше, але як тільки сховище...
Контактні дані Київ, Мясницкая вул., 35
Телефон: +38 (044) 997 - 93 - 19
Факс: +38 (044) 999 - 99 - 91
Служба аутентификации
У дійсності ми включили цей параметр, щоб зрівняти продуктивність двох бібліотек. Про продуктивність цього сценарію ми поговоримо небагато пізніше. Потім викликається функція open_files, що передається список імен файлів, отриманий від користувача. Як ми вже згадували, функція open_files - це функція-генератор, що повертає об'єкт файлу для кожного ім'я у вхідному списку. Це означає, що кожний файл відкривається фактично, тільки коли функція повертає відповідний об'єкт.

Тепер, коли в нас є итерируемый об'єкт із відкритими файлами, ми можемо виконувати з ним деякі операції. Ми можемо виконати обхід всіх файлів і скласти звіт по кожному з них або об'єднати їх деяким способом і скласти об'єднаний звіт відразу по всіх файлах. Це саме те місце, де на сцену виходить функція combine_lines. Якщо користувач передав ключ "consolidate", то "список файлів", по якому будуть виконуватися ітерації, буде містити єдиний об'єкт, подібний до файлу: генератор всіх рядків у всіх файлах.

Далі, незалежно від того, справжні файли втримуються в списку або комбінований файл, кожний з них передається відповідної функції generate_log_report, що повертає словник з IP-Адресами й кількістю байтів, відправлених по цих адресах. Для кожного файлу виводяться рядки-роздільники й відформатовані рядки з результатами роботи функції generate_log_report. При використанні бібліотеки, що виконує витяг даних за допомогою регулярних виражень, на створення звіту пішло порядку 46 секунд. При використанні версії, що використовує метод string. split, на створення звіту пішло 34 секунди. Але показники споживання пам'яті виявилися жалюгідними.
Обсяг зайнятий пам'яті досяг 130 Мбайт. Причина в тім, що функція generate_log_report зберігає список переданих байтів для кожного IP-Адреси у файлі журналу. Тому, чим більше файл, тим більший обсяг пам'яті буде споживати цей сценарій. Тепер підрахунок загального числа переданих байтів ведеться в міру витягу значень, а не в зухвалій функції. Протягом роботи цього сценарію споживання пам'яті склало порядку 4 Мбайт. Цей сценарій здатний обробляти 2 Гбайтные файли журналів за один хвилину.
Служба аутентификации Служба аутентификацииОдне із самих удалих визначень, з якими нам доводилося зіштовхуватися, приводиться у Википедии: "прикладний протокол, що дозволяє звертатися до служби каталогів, що працює поверх протоколу TCP/IP". Як приклад...
Веб додатка Веб додаткаОдне з поліпшень, яке можна було б внести в цей додаток, -це реалізувати сортування в порядку, зворотному поточний. Зробити це досить просто, але ми залишимо реалізацію цієї можливості читачам. Як ще одне поліпшення...
Запуск сценарію Запуск сценаріюЦе в точності відповідає нашим очікуванням. Тепер спочатку спробуємо запустити сценарій, що додає новий запис, а потім знову запустимо сценарій, що витягає дані. Цей приклад ідентичний попередньому прикладу, де використовувався метод store,...
Створення звітів Створення звітівКрім того, ми могли б розширити цей сценарій і відшукувати запису з обсягом використання 80 відсотків, 70 відсотків і видавати попередження по досягненні цих рівнів. Такий сценарій легко можна було б об'єднати, наприклад, с...
 
(c) Copyright