Тёмный

Ускорение кода на python в 30 тысяч раз 

omicron
Подписаться 562
Просмотров 14 тыс.
50% 1

Ускорение кода на python в 30 тысяч раз

Опубликовано:

 

27 май 2023

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 60   
@user-fc7ch3yx4c
@user-fc7ch3yx4c Год назад
list в python под капотом реализован как ArrayList, а не LinkedList (более строго - динамический вектор указателей). В любом случае, средняя асимптотика у него тоже O(1) (хотя худшая O(n), но возникает очень редко)
@omicron-IT
@omicron-IT Год назад
Посмотрел документацию и исходники, и Вы оказались правы. Спасибо за то, что указали на ошибку
@hustrik4805
@hustrik4805 Год назад
o(n) возникает при реалокации элементов ( т.к там происходит копирование всех предыдущих элементов и добавление нового ).
@andersg7252
@andersg7252 Год назад
Спасибо за видео. Начал активно учить пайтон месяц назад. Теперь, помимо всего прочего, дополнительно стало понятно одно из предназначений декораторов, почему они так удобны
@Pepega230
@Pepega230 Год назад
Очень информативное видео! Буду ждать развития канала :)
@lavron4ik855
@lavron4ik855 Год назад
Огромное спасибо за видео 😀
@CamomileOne
@CamomileOne Год назад
Не знаю как алгоритмы порекомендовали мне это не популярное видео, но я очень рад этой рекомендации. Хоть как обычно ничего не понял, но тема производительности для меня правда интересная, буду разбираться ) Даже решил подписаться на твой канал.
@Pepega230
@Pepega230 Год назад
Та же самая ситуация. Хорошее видео, мне понравилось, хоть понял и не всё. Надеюсь автор продолжит развиваться
@user-bc5lj6jy6e
@user-bc5lj6jy6e Год назад
Вполне неплохо рассказываешь, голос хорошо поставлен) С любопытством жду чего нибуть нового.
@user-xc2gu5jg9n
@user-xc2gu5jg9n Год назад
Мне почему-то кажется, что если твой код на пайтон работает недостаточно быстро - стоит вернуться в самое начало разработки и признать, что ты выбрал не тот язык программирования. Пайтон нужен не для скорости работы программы, а для того, чтобы максимально быстро написать то, что будет работать.
@omicron-IT
@omicron-IT Год назад
Спасибо, но в следующий раз досмотрите видео до конца, прежде чем писать подобный комментарий
@user-xc2gu5jg9n
@user-xc2gu5jg9n Год назад
@@omicron-IT Да я не ваше видео критикую. Вы-то как раз правильно все сказали. Мне в целом не понятна концепция ускорения пайтона. То-бишь, ускорение его сверх того, что дает знание стандартных алгоритмов. Тот же pypy или наличие классических массивов в пайтоне выглядит странно как по мне. Везде объекты, а тут вдруг классический массив...
@Pepega230
@Pepega230 Год назад
По моему, менять ЯП слишком радикально, когда уже написанный (!) код можно и немного ускорить сверх базовых алгоритмов
@zhorabulkin228
@zhorabulkin228 Год назад
Хорошее видео!!
@user-uh2rs8fi8b
@user-uh2rs8fi8b Год назад
Пригодится. Спасибо
@pashamorozov8257
@pashamorozov8257 Год назад
Спасибо за материал. Про кеш не знал
@flarmix1125
@flarmix1125 Год назад
спасибо большое! поэкспериментировал с @jit и получилось так что считать ту же сумму чисел гораздо быстрее с помощью for ~0.4 секунды на 1 трлн итераций а вот sum переваливает за 5 секунд еще на 100 миллионах итераций
@Lord_Nodus
@Lord_Nodus Год назад
В питоне list это динамический масссив, а не связный список. В коде питона удаление N элемента это не освобождение памяти и изменение укзателей, а memmove куска массива влево. Я точно не знаю, но numpy быстрее скорее всего потому, что в нём массив хранит данные (когда в итоне там хранятся ссылки на сами объекты), из-за этого доступ информации более быстрый и все функции для работы с массвом имеют меньше обстракций
@_Romanin_
@_Romanin_ Год назад
Всё это прекрасно, но скажу лишь одно в реальных проектах, мало где можно использовать Numba. Это может пригодиться для работы с музыкой так как там нужна быстрая работа с массивом чисел. При работе с нейросетями можно использовать, но не везде. Вещь хорошая, но узкоспециализированная.
@omicron-IT
@omicron-IT Год назад
Пожалуй, это так. В реальных проектах сам ни разу не использовал numba
@lavish3500
@lavish3500 Год назад
Только начал учить программирование, еще ниче не понятно, но слушать интересно:\
@user-xg4pd7en9d
@user-xg4pd7en9d Год назад
Спасибо за ролик! У меня вопрос: а с pandas как это применять при группировке строк, добавлении столбцов, создании сводных таблиц?
@omicron-IT
@omicron-IT Год назад
Если Вы про numba, то никак. Она несовместима с pandas
@LithiumDeuteride-6
@LithiumDeuteride-6 Год назад
Переписать код на нормальные ЯП, например С/С++ или даже ассемблер, но ассемблер высокоуровневый типа UASM
@rely_me
@rely_me 2 месяца назад
Нужна помощь с ускорением уже написанного кода. Из интересного: использую библиотеки cv2 и pytesseract
@user-mo7ge4cw3x
@user-mo7ge4cw3x Год назад
идеальное решение говорит нам о том что питон для программирования не годиться! в помойку его!
@user-kf4pk9kk9h
@user-kf4pk9kk9h Год назад
Спасибо, интересно рассказываете. Всё никак не пойму, зачем люди в образовательное видео вставляют фоновую музыку. Зрители же не для развлечения такое смотрят, а для получения полезной информации. На мой взгляд в таком случае музыка только отвлекает, а слишком громкая тем более.
@omicron-IT
@omicron-IT Год назад
Спасибо за замечание. В следующий раз сделаю музыку тише
@quasar3885
@quasar3885 Год назад
Мучаюсь с проблемой как бы ускорить код при использовании библиотеки python-docx. Имеется ворд файл в нем таблица на 50 страниц, я тупо циклом читаю каждую строку талицы и если значение совпадает с фильтром пишу в список. Так на перебор около 1000 строк таблицы уходит минуты 3. Вот как бы ускорить это простое действие(((
@nikd1ssv
@nikd1ssv Год назад
pypy сработает? Пробовал?
@quasar3885
@quasar3885 Год назад
@@nikd1ssv Оказывается лучше взять всю таблицу сразу записать к примеру в список как текст, и уже работать со списком делать что надо. Скорость раз в 10 быстрее.
@quasar3885
@quasar3885 Год назад
@@nikd1ssv Короче смирился с тем что долго читает документ. Ничего толкового не нашел. Причем чем больше таблица тем пропорционально медленнее читается 1 ячейка.
@user-pq4mm2yx8u
@user-pq4mm2yx8u 4 месяца назад
Я бы попробовал мультипоточность и покурить. Если вводавывода много, то много поточность сильно ускоряет весь процесс
@rely_me
@rely_me 2 месяца назад
Нужна помощь с ускорением уже написанного кода. Из интересного: использую библиотеки cv2 и pytesseract
@user-zr8kb3rh2u
@user-zr8kb3rh2u 3 месяца назад
Бро выпускай новые видео
@FF-pz5oz
@FF-pz5oz Год назад
Разве кортеж - это не встроенный массив в Python?
@omicron-IT
@omicron-IT Год назад
Массив должен быть изменяемым, кортеж же - это неизменяемая структура данных в python
@FF-pz5oz
@FF-pz5oz Год назад
@@omicron-IT понял, спасибо
@damirsob6176
@damirsob6176 Год назад
В начале видео код С++ написан явно не очень хорошо. Во-первых, зачем создавать константу и массив, потом заполнять этот массив, в цикле, который выполняется 150000 раз? К тому же, лучше создавать массив таких размеров не на стеке, а на куче, можно заюзать vector (он там сверху даже подключен :). Дальше, в условии третьего по счету цикла: i < std::sqrt(n) -> сравнивать так int с double это смело, конечно, кроме того, вычислять заново этот самый корень для каждой итерации для одного и того же числа - бессмысленно (это будет оптимизировано msvc, но все же, это плохой тон). Ну и зачем юзать printf, если это С++, где std::cout? Зачем юзать С-шный каст типа, почему бы не использовать static_cast? Не нужно измерять время выполнения программы таким образом. Кстати, опять же, это точно С++? Если да, то почему , если есть ?). Вообще лучше скомпилировать программу (или сбилдить проект через ту же вижлу), зайти в powershell и использовать утилиту Measure-Command, чтобы измерить время выполнения нормально.
@omicron-IT
@omicron-IT Год назад
К сожалению, я плохо знаком с с++
@damirsob6176
@damirsob6176 Год назад
@@omicron-IT Все ок, это не меняет сути видео, в остальном - все круто )
@romanlebedev9264
@romanlebedev9264 Год назад
К сожалению, ты и ролик свой не смог сделать, а тупо слизал
@Pepega230
@Pepega230 Год назад
@@romanlebedev9264 Что за неоправданная агрессия?
@user-ne4bd3ry1n
@user-ne4bd3ry1n Год назад
понятно, пайтон тормоз
@user-gd9mm5dd8s
@user-gd9mm5dd8s Год назад
Ускорить то его можно, вот только не везде и не всегда. И годится он в основном только для нейронок (и то, там почти все библиотеки написаны на С, без С питон ничто), для автоматизации чего либо и всё. Бэкенд я бы на нём в 2023 делать не стал, для это есть GО, или Node.js, или даже C#. Вообще не понимаю из-за чего этот язык стал таким популярным? Это как с модой в области одежды - придумал однажды кто-то носить брюки клёш и весь мир с ума сошёл, все надели на себя это уродство с широченными штанинами-колоколами. А позже все одумались и выбросили это недоразумение. Не хочу сказать, что питон это недоразумение, но хайп вокруг него сильно раздут и его тащат везде куда не следует - пишут на нём GUI после чего даже мощные компьютеры тормозят (то же самое и с JS и его ублюдочным электроном), создают на питоне мобильные приложения на мерзком Kivy, даже игры пытаются делать. А питон совсем не про это - он как клей для склеивания разных модулей написанных на С и С++, для простеньких скриптов - вот тут он очень удобен. А уж обучать на нём программированию это вообще бред. Скриптовой язык с динамической типизацией. И куда мир катится?
@omicron-IT
@omicron-IT Год назад
Спасибо за Ваше мнение
@Pepega230
@Pepega230 Год назад
Не вижу ни 1 объективного аргумента, заменить в твоём спиче python на условный (!) java (ничего против не имею) и будет такой же текст. Куда мир катиться, когда люди буквально уверовали в то, что python плохой и не могу объяснить почему. А сравнивать I/O-bound-ориентированный язык с CPU - смешно, как и ограничивать себя в технологиях: "без С питон ничто". Против С и С++ ничего не имею, сам на них пишу динамические библиотеки для распределения ресурсозатратной нагрузки с питона на них
@tobiuchiha4754
@tobiuchiha4754 Год назад
Он всем нравится потому что удобен. Легко читается, легко понимается, все лаконично, логично. Читаешь код c++ и охуеваешь. Тот же java. Все эти языки нужно жечь и создать с 0.
@rely_me
@rely_me 2 месяца назад
​@@Pepega230нужна помощь)))
@evilkite6816
@evilkite6816 Год назад
Зачем нам нумба если она работает через декоратор (python) если сразу можно использовать numpy с их C реплизацией работы с массивами.
@omicron-IT
@omicron-IT Год назад
Декоратор - это интерфейс numba для взаимодействия с python. Часть numba же написана на C и C++ У numpy же всё идёт точно также. Часть написана на python, часть - на C и C++ и других языках
@Pepega230
@Pepega230 Год назад
@@omicron-IT зачем таким людям отвечать, пускай в python beginners идут
@evilkite6816
@evilkite6816 Год назад
@@omicron-IT И....? Всеравно python code который потом вызывает нумба функцию (возможно врапер над eval или собственный парсер python для кода python для оптимизации...... ) Всеравно - как врапер + врапер может быть быстрее прямого интерфейса для numpy (C интерфейса) ?
@evilkite6816
@evilkite6816 Год назад
@@Pepega230 боты - это круто 😊
@Pepega230
@Pepega230 Год назад
@@evilkite6816 что? причём тут боты
@romanlebedev9264
@romanlebedev9264 Год назад
Плагиат🌚
@omicron-IT
@omicron-IT Год назад
Чем же?
@user-rx1gl1om6m
@user-rx1gl1om6m Год назад
Давайте ссылку на оригинал
Далее
Он тоже из IKEA 🙀
00:10
Просмотров 287 тыс.
Massively Speed-Up Python Code With Numba Compilation
16:28
Как ускорить Python
10:24
Просмотров 8 тыс.