В Python 3.15 появился профилировщик, который можно подключить к уже работающему процессу
Tachyon - новый статистический профилировщик в стандартной библиотеке Python. Устанавливать сторонние пакеты не нужно.
В отличие от
Запустить скрипт с профилированием:
Подключиться к уже работающему процессу по PID:
Можно даже наблюдать за результатами в реальном времени:
Tachyon умеет строить flamegraph и HTML-тепловые карты исходников, подсвечивая строки, на которых программа проводит больше всего времени.
Например, получить flamegraph можно так:
Ещё одна полезная возможность - сохранить профиль в бинарном формате, а потом строить из него разные отчёты без повторного запуска программы.
Есть ограничения. Tachyon не подходит для микробенчмарков, точного подсчёта вызовов и измерения разницы производительности в 1–2%. Для этого лучше использовать
Зато для поиска узких мест в долго работающих Python-сервисах инструмент весьма удобный. При подключении к чужому процессу могут потребоваться повышенные права.
https://mathspp.com/blog/tachyon-sampling-profiling-in-python
Tachyon - новый статистический профилировщик в стандартной библиотеке Python. Устанавливать сторонние пакеты не нужно.
В отличие от
cProfile, он периодически снимает снимки стека вызовов и по ним оценивает, где программа тратит больше всего времени. Накладные расходы при этом очень небольшие.Запустить скрипт с профилированием:
python -m profiling.sampling run app.py
Подключиться к уже работающему процессу по PID:
python -m profiling.sampling attach 12345
Можно даже наблюдать за результатами в реальном времени:
python -m profiling.sampling attach --live 12345
Tachyon умеет строить flamegraph и HTML-тепловые карты исходников, подсвечивая строки, на которых программа проводит больше всего времени.
Например, получить flamegraph можно так:
python -m profiling.sampling run --flamegraph app.py
Ещё одна полезная возможность - сохранить профиль в бинарном формате, а потом строить из него разные отчёты без повторного запуска программы.
Есть ограничения. Tachyon не подходит для микробенчмарков, точного подсчёта вызовов и измерения разницы производительности в 1–2%. Для этого лучше использовать
timeit или трассирующие профилировщики.Зато для поиска узких мест в долго работающих Python-сервисах инструмент весьма удобный. При подключении к чужому процессу могут потребоваться повышенные права.
https://mathspp.com/blog/tachyon-sampling-profiling-in-python
👍6❤3🔥2
4 800 аккаунтов и 61 764 репозитория. Что произошло на GitHub
10 ноября началась кампания по краже секретов из GitHub Actions. По данным Aikido Security, атакующие использовали 4 837 скомпрометированных аккаунтов, чтобы проверить доступ к 61 764 репозиториям.
Следы запуска вредоносного кода исследователи обнаружили как минимум в 1 800 репозиториях. Целью были секреты CI/CD, в том числе токены и ключи доступа к облачным сервисам. Сколько секретов удалось похитить, пока неизвестно.
https://labs.cloudsecurityalliance.org/research/csa-research-note-wfx-github-ci-secret-stealer-20261112-csa/
10 ноября началась кампания по краже секретов из GitHub Actions. По данным Aikido Security, атакующие использовали 4 837 скомпрометированных аккаунтов, чтобы проверить доступ к 61 764 репозиториям.
Следы запуска вредоносного кода исследователи обнаружили как минимум в 1 800 репозиториях. Целью были секреты CI/CD, в том числе токены и ключи доступа к облачным сервисам. Сколько секретов удалось похитить, пока неизвестно.
https://labs.cloudsecurityalliance.org/research/csa-research-note-wfx-github-ci-secret-stealer-20261112-csa/
👍5❤4😢4🔥3