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

Часто буває дуже важко визначити, яка модель краще відповідає вимогам - потоки виконання, процеси або асинхронні бібліотеки, такі як stackless або twisted. Нижче приводиться приклад опитування за допомогою утиліти ping великого масиву IP-Адрес. Тепер, коли в нас є своєрідна програма "Hello World" для потоків виконання, можна перейти до реалізації сценарію, що оцінить будь-який системний адміністратор. Візьмемо за основу наш сценарій і змінимо його так, щоб він опитував вузли в мережі. Це можна вважати початковим етапом на шляху створення універсального інструмента для роботи з мережею.

Цей приклад заслуговує того, щоб розібрати його на зрозумілі частини, але спочатку - невелике пояснення. Приклад розробки многопоточной версії утиліти ping з метою опитування подсети - це відмінний спосіб продемонструвати застосування потоків. "Звичайна" програма мовою Python, що не використовує потоки виконання, зажадала б часу для свого виконання N * (середній час очікування відповіді на кожний запит ping). Утиліта ping може повертати один із двох варіантів відповіді: час відгуку хоста й повідомлення про закінчення граничного часу очікування.

У типовій мережі можна зштовхнутися з обома варіантами. Це означає, що на виконання додатка, що використовує утиліту ping для опитування хостов мережі класу З, що складається з 254 адрес, може знадобитися до 254 (~ 3 секунди), що може скласти до 12.7 хвилин. При використанні потоків цей час можна зменшити до декількох секунд. Саме тому потоки мають важливе значення для розробки мережних додатків. Тепер зробимо ще крок і подумаємо, які умови можуть зустрітися в дійсності.

Скільки подсетей може існувати в типовому центрі обробки даних? 20? 30? 50? Очевидно, що програма, що виконує опитування послідовним способом, швидко втрачає свою практичну цінність, і многопоточная версія стає ідеальним вибором. Тепер повернемося до нашого простого сценарію й розглянемо деякі особливості реалізації. Перше, на що варто звернути увагу, - це імпортовані модулі, зокрема, найбільший інтерес для нас представляють модулі threading і Queue.
Служба аутентификации Служба аутентификацииОдне із самих удалих визначень, з якими нам доводилося зіштовхуватися, приводиться у Википедии: "прикладний протокол, що дозволяє звертатися до служби каталогів, що працює поверх протоколу TCP/IP". Як приклад...
Веб додатка Веб додаткаОдне з поліпшень, яке можна було б внести в цей додаток, -це реалізувати сортування в порядку, зворотному поточний. Зробити це досить просто, але ми залишимо реалізацію цієї можливості читачам. Як ще одне поліпшення...
Запуск сценарію Запуск сценаріюЦе в точності відповідає нашим очікуванням. Тепер спочатку спробуємо запустити сценарій, що додає новий запис, а потім знову запустимо сценарій, що витягає дані. Цей приклад ідентичний попередньому прикладу, де використовувався метод store,...
Створення звітів Створення звітівКрім того, ми могли б розширити цей сценарій і відшукувати запису з обсягом використання 80 відсотків, 70 відсотків і видавати попередження по досягненні цих рівнів. Такий сценарій легко можна було б об'єднати, наприклад, с...
 
(c) Copyright