Анулювання кешованого байт-коду

Оновлено: 28.04.2023

Перед тим, як Python завантажить кешований байт-код із файлу .pyc, він перевіряє, чи оновлений кеш із вихідним файлом .py. За замовчуванням Python робить це, зберігаючи мітку часу останньої зміни джерела та розмір у файлі кешу під час його запису. Під час виконання система імпорту потім перевіряє кеш-файл, перевіряючи збережені в кеш-файлі метадані з метаданими джерела.

Python також підтримує кеш-файли на основі хешів, які зберігають хеш вмісту вихідного файлу, а не його метаданих. Існує два варіанти хеш-файлів .pyc: позначений і не позначений. Для перевірених хеш-файлів .pyc Python перевіряє файл кешу, хешуючи вихідний файл і порівнюючи отриманий хеш із хешем у файлі кешу. Якщо перевірений файл кешу на основі хешу виявляється недійсним, Python повторно генерує його та записує новий перевірений файл кешу на основі хешу. Для неперевірених файлів .pyc на основі хешу Python просто припускає, що файл кешу дійсний, якщо він існує. Поведінка перевірки файлів .pyc на основі хешу може бути замінена прапором --check-hash-based-pycs.