https://pythonspeed.com/articles/bytesio-reduce-memory-usage/?utm_source=www.pythonweekly.com&utm_medium=newsletter&utm_campaign=python-weekly-issue-686-february-6-2025
#BytesIO #memoryview #memory
#BytesIO #memoryview #memory
Python⇒Speed
The surprising way to save memory with BytesIO
If you want to save memory when reading from a BytesIO, getvalue() is surprisingly a good choice.
Forwarded from Лига сисадминов
Что такое OpenTelemetry и как она может улучшить качество ваших сервисов
Рассмотрим на примерах, что такое OpenTelemetry, из каких ключевых концептов она состоит, и какие проблемы помогает решить.
https://telegra.ph/CHto-takoe-OpenTelemetry-i-kak-ona-mozhet-uluchshit-kachestvo-vashih-servisov-02-13
#ит_статьи #devops #logs #kubernetes #opentelemetry
Рассмотрим на примерах, что такое OpenTelemetry, из каких ключевых концептов она состоит, и какие проблемы помогает решить.
https://telegra.ph/CHto-takoe-OpenTelemetry-i-kak-ona-mozhet-uluchshit-kachestvo-vashih-servisov-02-13
#ит_статьи #devops #logs #kubernetes #opentelemetry
Telegraph
Что такое OpenTelemetry и как она может улучшить качество ваших сервисов
Раньше, когда мы говорили "backend", мы скорее всего имели в виду одно большое приложение с одной большой базой данных, для мониторинга которого было достаточно простого логирования. Теперь, благодаря технологиям вроде Kubernetes, микросервисы стали стандартом…
Forwarded from Лига сисадминов
Влияние максимального размера I/O-запросов на производительность систем Linux
В области оптимизации производительности Linux важнейшим фактором является производительность дискового ввода-вывода (I/O), которая существенно влияет на общую эффективность системы. Одним из ключевых параметров, влияющих на производительность дискового ввода-вывода, является максимальный размер I/O-запроса, определяемый параметром max_sectors_kb. Понимание и настройка этого параметра могут привести к значительному улучшению производительности системы. В этой статье мы рассмотрим понятие максимального размера I/O, его важность в системах Linux, а также его влияние на производительность в целом.
https://telegra.ph/Vliyanie-maksimalnogo-razmera-IO-zaprosov-na-proizvoditelnost-sistem-Linux-04-13
#ит_статьи #linux #iostat #optimisation #fio
В области оптимизации производительности Linux важнейшим фактором является производительность дискового ввода-вывода (I/O), которая существенно влияет на общую эффективность системы. Одним из ключевых параметров, влияющих на производительность дискового ввода-вывода, является максимальный размер I/O-запроса, определяемый параметром max_sectors_kb. Понимание и настройка этого параметра могут привести к значительному улучшению производительности системы. В этой статье мы рассмотрим понятие максимального размера I/O, его важность в системах Linux, а также его влияние на производительность в целом.
https://telegra.ph/Vliyanie-maksimalnogo-razmera-IO-zaprosov-na-proizvoditelnost-sistem-Linux-04-13
#ит_статьи #linux #iostat #optimisation #fio
Telegraph
Влияние максимального размера I/O-запросов на производительность систем Linux
В области оптимизации производительности Linux важнейшим фактором является производительность дискового ввода-вывода (I/O), которая существенно влияет на общую эффективность системы. Одним из ключевых параметров, влияющих на производительность дискового ввода…
https://nitter.hydranet.dev/edwardjxli/status/1897714940297068624 - о том, как работает contextlib.contextmanager
#contextmanager #contextlib
#contextmanager #contextlib
Forwarded from Linux Academy
📚 Bash Scripting: Шайд по циклам — на одной картинке
Если ты работаешь в Linux или автоматизируешь задачи через shell-скрипты — держи шпаргалку, которую обязан знать каждый разработчик.
На картинке — все основные типы циклов в Bash:
- 🔁
- 🧮 C-подобный
- 📜
- ♾
- 📂 Чтение файлов через
- ⏭
🧠 Полезные паттерны:
- ✅ Инкремент/декремент переменных в
- ✅ Условия выхода из цикла (`break`)
- ✅ Пропуск итераций (`continue`)
- ✅ Построчное чтение файлов без
🛠 Примеры, которые можно сразу копировать и вставлять в свои
📌 Забирай картинку — это идеальный материал для тех, кто хочет писать чистые и эффективные Bash-циклы.
#bash #linux #devtools #shell #cli #разработка #шпаргалка
@linuxacademiya
Если ты работаешь в Linux или автоматизируешь задачи через shell-скрипты — держи шпаргалку, которую обязан знать каждый разработчик.
На картинке — все основные типы циклов в Bash:
- 🔁
for по директориям и диапазонам- 🧮 C-подобный
for ((i=0; i<10; i++))- 📜
while и until- ♾
while true и while :- 📂 Чтение файлов через
while read line- ⏭
continue и break🧠 Полезные паттерны:
- ✅ Инкремент/декремент переменных в
while- ✅ Условия выхода из цикла (`break`)
- ✅ Пропуск итераций (`continue`)
- ✅ Построчное чтение файлов без
cat🛠 Примеры, которые можно сразу копировать и вставлять в свои
.sh скрипты.📌 Забирай картинку — это идеальный материал для тех, кто хочет писать чистые и эффективные Bash-циклы.
#bash #linux #devtools #shell #cli #разработка #шпаргалка
@linuxacademiya
Forwarded from Python/ django
🐍 Почему Python `deepcopy()` такой медленный и что использовать вместо
Функция
🔥 Почему
1. Рекурсия на всём дереве объектов
Python проходит по каждому вложенному элементу, даже если их сотни тысяч.
2. Определение метода копирования
Для каждого объекта проверяется, можно ли вызвать
3. Memo-словарь для ссылок
Чтобы избежать бесконечных циклов при копировании (например, объект ссылается сам на себя), Python ведёт словарь уже скопированных элементов. Это полезно, но замедляет работу.
4. Реализация на чистом Python
В отличие от сериализации (`pickle`),
📊 Пример замеров скорости
💻 Результат (у вас может отличаться, но смысл тот же):
- d
- p
- р
⚡ Когда что использовать
✅ copy.deepcopy()
Подходит, если структура очень сложная, а вам нужна стопроцентно независимая копия.
✅ pickle.loads(pickle.dumps(obj))
Быстрее на больших структурах, плюс удобно, если данные нужно сохранять.
✅ json.loads(json.dumps(obj))
Хорошо для простых словарей и списков с базовыми типами.
✅ Ручное копирование (list comprehension, dict comprehension)
Лучший вариант, если вы знаете структуру данных и хотите максимум скорости.
📌 Итог
d
Если важна производительность — используйте сериализацию или ручные методы копирования, они могут быть в десятки и сотни раз быстрее.
Ставь 🔥, сохраняй себе в копилку Python-трюков, чтобы не забыть 😉
@pythonl
Функция
copy.deepcopy() кажется удобной: она создаёт полную копию объекта со всеми вложенными структурами. Но на практике она часто оказывается очень медленной и становится бутылочным горлышком в проектах. Давайте разберёмся почему так происходит и какие есть альтернативы. 🔥 Почему
deepcopy() тормозит 1. Рекурсия на всём дереве объектов
Python проходит по каждому вложенному элементу, даже если их сотни тысяч.
2. Определение метода копирования
Для каждого объекта проверяется, можно ли вызвать
__deepcopy__, или приходится идти стандартным путём. 3. Memo-словарь для ссылок
Чтобы избежать бесконечных циклов при копировании (например, объект ссылается сам на себя), Python ведёт словарь уже скопированных элементов. Это полезно, но замедляет работу.
4. Реализация на чистом Python
В отличие от сериализации (`pickle`),
deepcopy() не ускорена на уровне C, поэтому работает медленнее. 📊 Пример замеров скорости
import copy, pickle, time
data = [[i for i in range(1000)] for _ in range(1000)]
# deepcopy
start = time.time()
a = copy.deepcopy(data)
print("deepcopy:", time.time() - start)
# pickle
start = time.time()
b = pickle.loads(pickle.dumps(data))
print("pickle roundtrip:", time.time() - start)
# list comprehension (для списков списков)
start = time.time()
c = [sub[:] for sub in data]
print("manual copy:", time.time() - start)
💻 Результат (у вас может отличаться, но смысл тот же):
- d
eepcopy: ~2.5 сек - p
ickle: ~0.8 сек - р
учное копирование: ~0.02 сек (!) ⚡ Когда что использовать
✅ copy.deepcopy()
Подходит, если структура очень сложная, а вам нужна стопроцентно независимая копия.
✅ pickle.loads(pickle.dumps(obj))
Быстрее на больших структурах, плюс удобно, если данные нужно сохранять.
✅ json.loads(json.dumps(obj))
Хорошо для простых словарей и списков с базовыми типами.
✅ Ручное копирование (list comprehension, dict comprehension)
Лучший вариант, если вы знаете структуру данных и хотите максимум скорости.
📌 Итог
d
eepcopy() — это универсальный инструмент, но он платит за универсальность скоростью. Если важна производительность — используйте сериализацию или ручные методы копирования, они могут быть в десятки и сотни раз быстрее.
Ставь 🔥, сохраняй себе в копилку Python-трюков, чтобы не забыть 😉
@pythonl
https://habr.com/ru/companies/domclick/articles/804535/
https://habr.com/ru/companies/domclick/articles/942584/ - 2 обьемные статьи о мониторинге celery
#celery #monitoring
https://habr.com/ru/companies/domclick/articles/942584/ - 2 обьемные статьи о мониторинге celery
#celery #monitoring