|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|||
Увеличиваем скорость Python и уменьшаем потребление памяти21.07.2022, 07:52. Показов 22268. Ответов 281
Метки нет (Все метки)
Если не учитывать, разные советы по увеличению скорости, например замена for на while, то предлагаю знающих людей высказаться, какая из библиотек для увеличения скорости выполнения кода им больше нравится или написать впечатления от тестирования какой-то из них. Также прошу посоветовать библиотеки по уменьшению расхода оперативной памяти, если они есть.
https://nuitka.net/posts/pytho... ndows.html https://nuitka.net/doc/download.html https://pypi.org/project/Nuitka/ https://github.com/Nuitka/Nuitka
======================================== ====== https://github.com/pyston/pyston/releases https://numba.pydata.org/numba... guide.html https://downloads.python.org/pypy/ https://cython.org/
0
|
|||
| 21.07.2022, 07:52 | |
|
Ответы с готовыми решениями:
281
Убираем циклы, увеличиваем скорость! +тесты Потребление памяти Потребление памяти |
|
14330 / 9424 / 1357
Регистрация: 21.01.2016
Сообщений: 35,520
|
||
| 13.08.2022, 12:52 | ||
|
2
|
||
| 13.08.2022, 13:04 | |
|
0
|
|
| 13.08.2022, 13:27 | |
|
Не по теме: Рыжий Лис, я старался не усложнять для ТС картину мира...
0
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||||||
| 15.08.2022, 11:18 [ТС] | ||||||
|
https://pypi.org/project/grequests/
Добавлено через 5 минут
Также там сказано, что повторный запуск будет быстрее, так как код уже скомпилирован и находится в кэш. Пока ещё не понял, раз данные сохраняются в кэш, почему ещё быстрее будет, если ещё написать (cache=True), в видео это объясняется на примере с расчетами. Ещё сказано, если что-то планируется вычислять несколько дней, то полезно добавить parallel=True.
0
|
||||||
|
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
|
|
| 15.08.2022, 11:31 | |
|
1
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||
| 15.08.2022, 11:32 [ТС] | ||
|
0
|
||
|
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
|
||
| 15.08.2022, 11:33 | ||
0
|
||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 15.08.2022, 11:35 | |
|
Катафалк, спокуха, это все продублировано еще минимум на двух форумах
0
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|||||||||||||||||||||||||
| 15.08.2022, 17:19 [ТС] | |||||||||||||||||||||||||
|
https://numpy.org/doc/stable/r... y.sum.html
https://numpy.org/doc/stable/r... diter.html
https://stackabuse.com/guide-t... -function/
А разве не в этой теме обсуждалась рекурсия и давал ссылку на видео по увеличению скорости на основе этого? Пролистал страницы и не смог найти. Парсер что-ли сделать для быстрого поиска информации в темах. Кто-то будет помогать, когда придет время, если не буду справляться?
0
|
|||||||||||||||||||||||||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 15.08.2022, 17:22 | |
|
2
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 15.08.2022, 17:24 [ТС] | |
|
Не по теме:
Кликните здесь для просмотра всего текста
Парсер пролистывает страницы темы и ищет ту, на которой встречается ключевое слово. Возможно обмениваться информацией по этому поводу в личке.
0
|
|
|
14330 / 9424 / 1357
Регистрация: 21.01.2016
Сообщений: 35,520
|
||
| 15.08.2022, 17:27 | ||
|
0
|
||
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 15.08.2022, 18:47 [ТС] | |
|
Это видео сохранял на компьютер. Welemir1 писал, что рекурсия не нужна. Однако сейчас занимаюсь скриптом парсера для скачивания файлов, который может зайти в папку, если ссылка не на файл, а на директорию и уже оттуда забрать.
0
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||||||||||||||||||||||||||
| 16.08.2022, 17:20 [ТС] | ||||||||||||||||||||||||||
|
https://gist.github.com/Guhan-... cd9ff0d5de
Многие люди утверждают, что киви медленный. Хотя это может быть правдой, это в основном связано с тем, что python медленно работает на устройствах Android. Таким образом, программист должен правильно оптимизировать свой код, чтобы создать производительное приложение. Большая часть задержек на устройствах Android с приложениями kivy возникает из-за создания виджетов. Создание виджета остается самым медленным шагом в приложении kivy. Вот некоторые из методов, которым я следую, чтобы оптимизировать свои приложения и обеспечить скорость 60 кадров в секунду даже на старых устройствах. Методы оптимизации: 2preload.md 1. Загрузите все ваши виджеты при запуске Один очень простой способ повысить производительность вашего приложения — загрузить все тяжелые виджеты или даже все виджеты ваших приложений в начале вашего приложения. Однако у этого есть недостаток, вызывающий более длительное время загрузки вашего приложения. Способ скрыть это долгое время загрузки — создать интересный экран-заставку приложения с анимацией. Buildozer поддерживает анимацию лотереи (https://github.com/tshirtman/p4a_lottie_demo , любезно предоставлено tshirtman). Загрузка всех ваших виджетов при запуске означает, что вы можете просто добавлять свои виджеты на экраны через свой код, и влияние на производительность станет незначительным. 3animations.md 2. Используйте анимацию Если вам нужно создавать свои виджеты во время выполнения программы, вы можете использовать анимацию, чтобы скрыть отставание. Правильно размещенные анимации, которые анимируют непрозрачность, могут использоваться, чтобы скрыть время, необходимое для загрузки виджетов. Пользователь будет воспринимать это просто как переход, а не как отставание. Сначала создайте виджет и установите для него нулевую непрозрачность. Добавьте виджет в макет, в котором он должен быть. Добавьте анимацию непрозрачности этого виджета. Установите продолжительность на что-то маленькое, например, 0,2 секунды. Вы можете пойти дальше, если вам нужно загрузить несколько экземпляров одного и того же виджета. Вместо того, чтобы загружать их все вместе. Загрузите один виджет и по завершении его анимации загрузите следующий. Держите продолжительность анимации короткой, чтобы в сумме они не стали слишком длинными. 4Animations.py """ Загрузка нескольких экземпляров виджета в течение определенного периода времени для предотвращения задержки. Полезно для более сложных виджетов, чем просто кнопка.
По умолчанию при создании виджета. Kivy создаст весь виджет в одном кадре. Но если ваш виджет сложный и содержит множество виджетов и макетов, это может вызвать задержку. Это связано с тем, что kivy будет сдерживать отображение этого кадра до тех пор, пока виджет не будет полностью создан, что будет отображаться для вашего пользователя как зависание или зависание программы. В некоторых случаях использование полосы загрузки, чтобы показать, что приложение на самом деле все еще работает, но просто загрузка данных полезна, но не доставляет удовольствия. Это заставляет пользователя ждать, пока приложение завершит свою работу, что может быть неприятно. Должно быть какое-то визуальное действие. Вместо этого вы можете медленно загружать экземпляры ваших виджетов в несколько кадров. В основном код работает таким образом, что вы создаете виджет в фрейме, а затем следующий экземпляр в следующем фрейме и так далее. Таким образом, большие объемы данных могут быть загружены быстро. Перейдите по этой ссылке для получения дополнительной информации (https://blog.kivy.org/2014/01/... l-in-kivy/) Примечание. Этот метод эффективен только в том случае, если вам нужно загрузить большое количество простых виджетов. Если вам нужно загружать сложные виджеты, я бы предложил использовать анимацию, как в методе 2. Или же вы можете разбить сложный виджет на более мелкие и простые и загрузить их в несколько кадров. 6simplify.md 4. Максимально упростите свои виджеты Это действительно болезненная задача, но она определенно того стоит. Если вы можете удалить ненужные макеты и виджеты, вы можете значительно повысить производительность своих приложений. Некоторые советы: Используйте Boxlayouts и GridLayouts, поскольку я обнаружил, что эти макеты могут помочь разместить ваш виджет более эффективно, чем floatlayouts. Присоединяйтесь к лейблам вместе. Вместо того, чтобы иметь три виджета ярлыков. Соедините их вместе, чтобы сформировать единую метку, и используйте разметку для изменения стиля/цвета шрифта и любого другого свойства.
7usethreads.md 5. Используйте многопоточность везде, где это возможно Невозможно обновить пользовательский интерфейс или создать виджеты в потоке, поскольку таким образом kivy не гарантирует стабильного поведения. Вместо этого запустите свой пользовательский интерфейс в своем основном потоке и запустите другие функции вашего приложения во вторичном потоке. Это, если все сделано правильно и для правильного варианта использования, может быть очень эффективным для повышения производительности. Проверьте здесь информацию о многопоточности Python простым способом: (https://www.geeksforgeeks.org/... hon-set-1/) 8LazyLoading.md 6 экранов ленивой загрузки Этот метод можно использовать для значительного увеличения времени загрузки вашего приложения на Android. Он работает, загружая только главный экран, а затем медленно загружая другие экраны вашего приложения с течением времени. Код принадлежит @Kulothungan16... Проверьте его репозиторий для получения дополнительной информации (https://github.com/Kolothungan... g-template) 9Разное.мд 7 Разное Сократите свои операторы импорта (улучшает время запуска, но не намного). Неправильный:
Не используйте слишком много экземпляров анимации, так как это медленно на Android. Уменьшите значение шага анимации до 1/30, чтобы анимация обновлялась только каждый второй кадр. Полезно, особенно для анимации непрозрачности, поскольку разница вообще не видна. Вы можете снизить значение до 1/10 для анимации на основе непрозрачности.
Используйте виджеты как можно чаще. Вместо того, чтобы воссоздавать виджет каждый раз при изменении некоторых значений, повторно используйте уже созданные и изменяйте только необходимые значения. Добавлено через 1 минуту https://kivy.org/doc/stable/faq.html Почему вы используете Python? Разве это не медленно? Попробуем дать исчерпывающий ответ; пожалуйста, потерпите нас. Python — очень гибкий язык, который позволяет вам делать многие вещи за (для сравнения) короткое время. Для многих сценариев разработки мы настоятельно рекомендуем быстро написать наше приложение на языке высокого уровня, таком как Python, протестировать его, а затем, при необходимости, оптимизировать. Но как насчет скорости? Если вы сравните скорость выполнения реализаций для определенного набора алгоритмов (особенно обработки чисел), вы обнаружите, что Python намного медленнее, чем, скажем, C++. Теперь вы можете еще больше убедиться в том, что в нашем случае не стоит использовать Python. Рисование сложной графики (и мы не говорим здесь о OpenGL вашей бабушки) довольно затратно в вычислительном отношении, и, учитывая, что мы часто хотим сделать это для богатого пользовательского опыта, это было бы справедливым аргументом. Но практически в каждом случае ваше приложение тратит большую часть времени (безусловно) на выполнение одной и той же части кода. В Kivy, например, такими частями являются диспетчеризация событий и отрисовка графики. Теперь Python позволяет сделать эти части намного быстрее. Используя Cython, вы можете скомпилировать свой код до уровня C, а оттуда ваш обычный компилятор C оптимизирует все. Это довольно безболезненный процесс, и если вы добавите некоторые подсказки в свой код, результат станет еще быстрее. Мы говорим об увеличении производительности в диапазоне от 1x до более чем 1000x (сильно зависит от вашего кода). В Kivy мы сделали это за вас и реализовали части нашего кода, где эффективность действительно имеет решающее значение, на уровне C. Для рисования графики мы также используем современные графические процессоры, которые для некоторых задач, таких как растеризация графики, намного эффективнее, чем центральный процессор. Kivy делает все возможное для графического процессора, чтобы максимизировать производительность. Если вы используете наш Canvas API для рисования, есть даже изобретенный нами компилятор, который автоматически оптимизирует ваш код рисования. Если вы держите свой рисунок в основном на графическом процессоре, большая часть скорости выполнения вашей программы определяется не используемым языком программирования, а графическим оборудованием, которое вы для этого используете. Мы считаем, что эти (и другие) оптимизации, которые Kivy делает для вас, уже делают большинство приложений достаточно быстрыми. Часто вы даже захотите ограничить скорость работы приложения, чтобы не тратить ресурсы впустую. Но даже если этого недостаточно, у вас все еще есть возможность использовать Cython для своего собственного кода, чтобы значительно ускорить его. Поверьте нам, когда мы говорим, что очень тщательно все обдумали. Мы выполнили множество различных тестов и придумали несколько умных оптимизаций, чтобы ваше приложение работало гладко.
0
|
||||||||||||||||||||||||||
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 17.08.2022, 20:56 [ТС] | |
|
re.compile
0
|
|
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 17.08.2022, 21:09 | |
|
re.findall
0
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 17.08.2022, 21:11 [ТС] | |
|
Я хотел обратить внимание, что компиляция регулярного выражения может быть полезна для увеличения скорости. А Вы что хотели показать?
0
|
|
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
||
| 17.08.2022, 21:15 | ||
|
Для увеличения скорости регулярки нужно писать грамотные регулярки. Т.о. такой вариант тебе не подходит.
0
|
||
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 17.08.2022, 21:30 [ТС] | |
|
...
0
|
|
| 17.08.2022, 21:30 | |
|
Помогаю со студенческими работами здесь
220
Потребление памяти Потребление памяти Потребление памяти Потребление памяти Потребление памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|