Python вопросы с собеседований
24.8K subscribers
713 photos
93 videos
17 files
583 links
Вопросы с собеседований по Python

@workakkk - админ

@machinelearning_interview - вопросы с собесдований по Ml

@pro_python_code - Python

@data_analysis_ml - анализ данных на Python

@itchannels_telegram - 🔥 главное в ит

РКН: clck.ru/3FmrFd
Download Telegram
🖥 Теория + Notebook'и с практическими заданиями по основным темам Python

Здесь объясняются структуры данных, ООП, различные принципы и паттерны типа SOLID, обработка ошибок, написание тестов и много всего другого (в т.ч. алгоритмы сортировки), что можно освежить перед собеседованием

🟡 Hands on Programming with Python
🟡 Ссылка сразу на все Notebook'и

@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() прекращает работу, когда заканчивается самый короткий список:


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× быстрее в официальном 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
👍72
⚡️ Как узнать количество CPU в Python одной строкой

Для этого не нужны сторонние библиотеки — всё есть в стандартном 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 сразу создаёт весь список:


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
👍53