Завдяки lazy imports програми на Python будуть запускатись швидше
Програми, написані на Python, тепер будуть швидше запускатись завдяки затвердженню пропозиції PEP 810 Explicit lazy imports (Явний лінивий імпорт). Оновлення дозволяє скриптам відкладати завантаження імпортованих бібліотек до моменту їх фактичного застосування, пише The Register.
Розробники можуть відзначати окремі операції імпорту, як «ліниві» за допомогою явного синтаксису. Це дає програмам на Python скорочення часу запуску, споживання пам’яті та обсягу непотрібної роботи.
Пропозиція зберігає повну зворотну сумісність: звичайні оператори імпорту залишаються незмінними, а lazy імпорт включається лише після явного запиту.
Імпорт модулів у Python — це одночасно і перевага, і проблема. Перевага, оскільки кілька операторів import можуть значно розширити функціональність програми. Водночас, це може стати проблемою, тому що імпортовані символи можуть ніколи не бути використані, що потенційно збільшує час запуску. Гарним прикладом цього може стати виклик програми з командного рядка за допомогою чогось на кшталт –help, через що виникає необхідність чекати, поки завантажаться непотрібні імпортовані елементи. Тепер, завдяки лінивому імпорту, завдання відкладається до того часу, поки воно дійсно не знадобиться.
Пропозицію щодо вдосконалення Python (PEP 810) було висунуто Пабло Сальгадуном, членом Керівної ради, 3 жовтня та схвалено 3 листопада.
Хоча в Python існує кілька способів реалізувати лінивий імпорт, але в самій мові досі немає ніяких вбудованих рішень. Попередні спроби удосконалення зазнали невдачі. PEP 690 було відхилено частково тому, що ця пропозиція робила лінивий імпорт стандартним, і це викликало занепокоєння щодо фрагментації спільноти та зворотної сумісності. Паралельно розробники створили власні обхідні способи, а деякі організації навіть відокремили форк CPython.
Прогнозується, що PEP 810 досягне успіху, оскільки лінивий імпорт зберігає зворотну сумісність та стандартизує те, що зараз є фрагментованим ландшафтом користувацьких рішень.












Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: