Здесь объясняются структуры данных, ООП, различные принципы и паттерны типа SOLID, обработка ошибок, написание тестов и много всего другого (в т.ч. алгоритмы сортировки), что можно освежить перед собеседованием
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2🔥2
🐍 Python-совет: как объединить списки разной длины
Обычный
Чтобы сохранить все элементы, используйте zip_longest()
Для пустых позиций можно указать своё значение:
result = zip_longest(
x,
y,
fillvalue="нет значения",
)```
Полезно при объединении таблиц, колонок и данных из источников разной длины.
#Python #Programming #DataProcessing
Обычный
zip() прекращает работу, когда заканчивается самый короткий список:
x = [1, 2, 3, 4, 5]
y = ["a", "b", "c"]
print(list(zip(x, y)))
# [(1, "a"), (2, "b"), (3, "c")]
Чтобы сохранить все элементы, используйте zip_longest()
from itertools import zip_longest
print(list(zip_longest(x, y)))
# [(1, "a"), (2, "b"), (3, "c"), (4, None), (5, None)]
Для пустых позиций можно указать своё значение:
result = zip_longest(
x,
y,
fillvalue="нет значения",
)```
Полезно при объединении таблиц, колонок и данных из источников разной длины.
#Python #Programming #DataProcessing
❤6🔥3🥰1
🚀 ИИ-агент ускорил SQLite до 59% меньше чем за 8 часов
Ускорить SQLite хотя бы на 5% уже было бы серьёзным результатом. Это один из самых зрелых и оптимизированных проектов в мире — его команда почти 20 лет выжимает из кода каждую долю производительности.
Но AI-агент KISS Sorcar менее чем за 8 часов и с затратами меньше $150 добился заметного ускорения сразу в нескольких типах нагрузки.
Результаты:
- 2,06× быстрее в официальном
- 1,90× в TATP — транзакционная OLTP-нагрузка
- 1,30× в Star Schema Benchmark — аналитические запросы
- 1,25× в
Агент нашёл места, где стандартная конфигурация SQLite несла лишние расходы — особенно при записи транзакций на диск.
После этого он:
- изменил код и настройки
- прогнал бенчмарки
- проверил свои же изменения на ошибки
- сохранил совместимость с существующими тестами
анализ зрелой кодовой базы → поиск узких мест → изменение реализации → бенчмарки → проверка собственных решений.
GitHub:
https://github.com/ksenxx/sqlite-optimized/
#AI #SQLite #Programming #CodingAgents #Performance #OpenSource
Ускорить SQLite хотя бы на 5% уже было бы серьёзным результатом. Это один из самых зрелых и оптимизированных проектов в мире — его команда почти 20 лет выжимает из кода каждую долю производительности.
Но AI-агент KISS Sorcar менее чем за 8 часов и с затратами меньше $150 добился заметного ускорения сразу в нескольких типах нагрузки.
Результаты:
- 2,06× быстрее в официальном
speedtest1 (~30 тыс. операций)- 1,90× в TATP — транзакционная OLTP-нагрузка
- 1,30× в Star Schema Benchmark — аналитические запросы
- 1,25× в
kvtest — работа с BLOB и дисковым I/OАгент нашёл места, где стандартная конфигурация SQLite несла лишние расходы — особенно при записи транзакций на диск.
После этого он:
- изменил код и настройки
- прогнал бенчмарки
- проверил свои же изменения на ошибки
- сохранил совместимость с существующими тестами
анализ зрелой кодовой базы → поиск узких мест → изменение реализации → бенчмарки → проверка собственных решений.
GitHub:
https://github.com/ksenxx/sqlite-optimized/
#AI #SQLite #Programming #CodingAgents #Performance #OpenSource
👍7❤2
⚡️ Как узнать количество CPU в Python одной строкой
Для этого не нужны сторонние библиотеки — всё есть в стандартном
Например:
Но есть важный нюанс: функция обычно возвращает количество логических процессоров, доступных системе, а не обязательно число физических ядер.
То же самое можно получить через:
Это особенно полезно, когда нужно автоматически подобрать количество worker-процессов:
Но запускать
Маленькая функция, но часто полезна при настройке
#Python #Programming #Multiprocessing #Backend
Для этого не нужны сторонние библиотеки — всё есть в стандартном
multiprocessing:
import multiprocessing
print(multiprocessing.cpu_count())
Например:
8
Но есть важный нюанс: функция обычно возвращает количество логических процессоров, доступных системе, а не обязательно число физических ядер.
То же самое можно получить через:
import os
print(os.cpu_count())
Это особенно полезно, когда нужно автоматически подобрать количество worker-процессов:
workers = multiprocessing.cpu_count()
Но запускать
N workers только потому, что у CPU есть N потоков, не всегда оптимально. Для CPU-bound задач количество процессов обычно подбирают экспериментально, а для I/O-bound архитектура может быть совсем другой.Маленькая функция, но часто полезна при настройке
multiprocessing, worker pools и параллельных вычислений.#Python #Programming #Multiprocessing #Backend
❤1👍1
Forwarded from Just Xor
🐍 Генераторные выражения в Python - один из самых простых способов экономить память.
Обычный list comprehension сразу создаёт весь список:
А generator expression вычисляет значения только по мере необходимости:
То есть миллион элементов не хранится в памяти одновременно.
Можно получать значения по одному:
или передать генератор напрямую в:
Главный плюс - lazy evaluation.
Особенно полезно для:
- больших файлов;
- потоков данных;
- длинных последовательностей;
- ETL-пайплайнов;
- обработки данных, которые не нужно хранить целиком.
Но есть нюанс: генератор одноразовый.
После того как значения закончились, пройти по нему повторно уже нельзя.
Маленький синтаксический приём, который может заметно уменьшить потребление памяти.
#Python #Programming #Backend #DataEngineering
Обычный list comprehension сразу создаёт весь список:
squares = [x ** 2 for x in range(1_000_000)]
А generator expression вычисляет значения только по мере необходимости:
squares = (x ** 2 for x in range(1_000_000))
То есть миллион элементов не хранится в памяти одновременно.
Можно получать значения по одному:
next(squares)
или передать генератор напрямую в:
sum(...)
max(...)
any(...)
all(...)
Главный плюс - lazy evaluation.
Особенно полезно для:
- больших файлов;
- потоков данных;
- длинных последовательностей;
- ETL-пайплайнов;
- обработки данных, которые не нужно хранить целиком.
Но есть нюанс: генератор одноразовый.
После того как значения закончились, пройти по нему повторно уже нельзя.
Маленький синтаксический приём, который может заметно уменьшить потребление памяти.
#Python #Programming #Backend #DataEngineering
👍5❤3