TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #5029 620
Пакетная обработка в Python: где strict=True не спасает запись

С Python 3.12 itertools.batched() лениво забирает из итератора элементы только для очередного кортежа. Поток из файла, курсора или генератора не приходится сначала превращать в список: памяти для группировки нужно столько, сколько занимает один пакет, а не весь источник.

С Python 3.13 параметр strict=True отклоняет неполный последний пакет. Но ошибка возникает во время итерации. При 250 записях и размере пакета 100 первые 200 уже могут попасть в базу, прежде чем оставшиеся 50 вызовут ValueError. Строгость проверяет форму входа, а не делает цикл транзакцией.

Явное лучше неявного: для записи по принципу «всё или ничего» заранее проверьте конечный источник либо используйте транзакцию системы назначения. Разбор itertools.batched() также объясняет, почему list(batched(...)) лишает обработку преимущества ленивости.
Nalar Batch Python Iterables Lazily with itertools.batched Learn how itertools.batched groups Python iterables lazily, how partial final batches behave, when strict mode helps, and where batching does not provide concurrency or transaction guarantees.
More from @zen_of_python
  1. Sep 30, 2026Как воспроизводить гонки потоков Python с помощью blanket Обычно порядок выполнения потоко…
  2. Sep 30, 2026Как отменять задачи в heapq и сохранять порядок при равных приоритетах heapq сравнивает ко…
  3. Sep 29, 2026Как битовые множества сокращают память моделей Pydantic Explicit is better than implicit,…
  4. Sep 29, 2026Как проверять плагины через контракт Pydantic и FastAPI Сервис может отвечать по нужным ад…
  5. Sep 29, 2026Как OpenBLAS ускоряет NumPy в браузере Раньше браузерная сборка NumPy выполняла np.matmul…
  6. Sep 28, 2026partial или lambda: как специализировать колбэк без сюрпризов functools.partial заранее св…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →