Форум программистов, компьютерный форум, киберфорум
Python: IDE, инструментарий
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/82: Рейтинг темы: голосов - 82, средняя оценка - 4.54
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755

Увеличиваем скорость Python и уменьшаем потребление памяти

21.07.2022, 07:52. Показов 22934. Ответов 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
Build it using
python -m nuitka hello.py
Note

This will prompt you to download a C caching tool (to speed up repeated compilation of generated C code) and a MinGW64 based C compiler unless you have a suitable MSVC installed. Say yes to both those questions.
Создайте его, используя
python -m nuitka hello.py
Примечание

Вам будет предложено загрузить инструмент кэширования C (для ускорения повторной компиляции сгенерированного кода C) и компилятор C на основе MinGW64, если у вас не установлен подходящий MSVC. Скажите «да» на оба этих вопроса.
Nuitka люди используют, чтобы делать exe из кода Пайтон.

======================================== ======

https://github.com/pyston/pyston/releases

https://numba.pydata.org/numba... guide.html

https://downloads.python.org/pypy/

https://cython.org/
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.07.2022, 07:52
Ответы с готовыми решениями:

Убираем циклы, увеличиваем скорость! +тесты
Уважаемые форумчане, предлагаю вашему вниманию небольшую сборку тестов, смотрим и используем более быстрые методы Module Module1 ...

Потребление памяти
Здравствуйте! Озадачился оптимизацией потребления памяти, поэтому подскажите, каким способом можно узнать сколько некоторые части кода...

Потребление памяти
Добрый день. У меня есть код, который реализует загрузку изображений в таблицу. Я сделал две версии: 1) простая асинхронная загрузка...

281
01.08.2022, 18:19
Студворк — интернет-сервис помощи студентам

Не по теме:

Если отладка - это процесс удаления ошибок из кода, тогда программирование - это процесс добавления ошибок.

Следовательно, идеальный код - это тот, который ещё не написан.

"No code is better than no code."

0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
01.08.2022, 18:27  [ТС]
Если Вы пишете for в циклах, советуют заменить на while, если важна скорость кода. Что Вы думаете по этому поводу?
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
01.08.2022, 18:33
Ясно, значит не исчерпана, продолжаем тратить своё и чужое время.
0
Эксперт .NET
 Аватар для Usaga
14364 / 9465 / 1360
Регистрация: 21.01.2016
Сообщений: 35,689
02.08.2022, 07:19
supmener, а вы возьмите, да напишите два примера с for и while. И замерьте разницу.

Что вы думаете по этому поводу? Или звиздеть не форуме - не мешки ворочать? Зачем что-то проверять на практике, когда можно воздух сотрясать, да?
2
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
02.08.2022, 07:28  [ТС]
Если правильно понял, for используется там, где скорость выполнения не так нужна, а важно показать более читаемый код.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
02.08.2022, 07:40
Цитата Сообщение от supmener Посмотреть сообщение
Если правильно понял, for используется там, где скорость выполнения не так нужна, а важно показать более читаемый код.
Это не for там используется, а питон в целом. Если важна скорость выполнения, то про питон забудьте.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
02.08.2022, 07:53  [ТС]
Имею в виду оптимизацию скорости выполнения кода в самом Пайтоне, а не в сравнении с другими языками.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
02.08.2022, 08:34
supmener, ты проверил? замерил время? каковы результаты, где код проверки?
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
02.08.2022, 11:01  [ТС]
Постараюсь сейчас или сегодня написать.

Добавлено через 1 час 49 минут
Python
1
2
3
4
5
6
7
8
from time import perf_counter
start = perf_counter()
for i in range(100):
    f = open("test_scorosti.txt", "a")
    f.writelines("Хорошего настроения\n")
    f.close()
end = perf_counter()
print(end-start) # 0.06874259997857735
Python
1
2
3
4
5
6
7
8
9
10
from time import perf_counter
start = perf_counter()
a = 100
while a > 0:
    f = open("test_scorosti2.txt", "a")
    f.writelines("Хорошего настроения\n")
    f.close()
    a = a-1
end = perf_counter()
print(end-start) # 0.053640600002836436
0
5044 / 1071 / 149
Регистрация: 29.01.2013
Сообщений: 6,257
02.08.2022, 11:16
supmener, замечания:
  • 100 семплов - слишком мало
  • открытие и закрытие файла должно быть вне цикла
  • данные результаты - статистическая погрешность
  • любое измерение надо проводить не менее 100 раз и выводить среднее
1
Эксперт .NET
 Аватар для Usaga
14364 / 9465 / 1360
Регистрация: 21.01.2016
Сообщений: 35,689
02.08.2022, 11:28
supmener, вы этим кодом тестируете производительность доступа к HDD\SDD, а не скорость работы операторов циклов.
3
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
02.08.2022, 11:29  [ТС]
from time import perf_counter
start = perf_counter()
for i in range(100000000):
a = 0
a = a + 1
end = perf_counter()
print(end-start) # 7.589125200000126
0
Эксперт .NET
 Аватар для Usaga
14364 / 9465 / 1360
Регистрация: 21.01.2016
Сообщений: 35,689
02.08.2022, 11:30
Цитата Сообщение от supmener Посмотреть сообщение
range(100)
А за этой штукой не итератор ли случаем? Если так, то тоже скажется, хотя к самому for отношения оно не имеет.

В результате имеем замеры от человека, который смутно представляет себе, что он замеряет и зачем...
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
02.08.2022, 11:35  [ТС]
В языке Python тоже есть цикл for. Но это не цикл со счетчиком. В Питоне он предназначен для перебора элементов последовательностей и других сложных объектов. https://younglinux.info/python/while
...
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.08.2022, 11:36
supmener, иди в ассемблер, век воли не видать. Вот где вечно можно оптимизировать, рай, а не язык.
И скорость до небес, и места не занимает, и под любую архитектуру, и команд не так много, и лаконично! Загляденье!
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
02.08.2022, 11:43  [ТС]
Python
1
2
3
4
5
6
7
from time import perf_counter
start = perf_counter()
a = 0
while a < 100000000:   
    a = a + 1
end = perf_counter()
print(end-start) # 7.280807000002824
0
02.08.2022, 11:44

Не по теме:

iSmokeJC, и мы в ветке асма почти не мелькаем)))

0
02.08.2022, 11:47

Не по теме:

Alli_Lupin, именно!
Наверное, последняя ветка, которую ТС еще не заспамил

0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
02.08.2022, 13:23  [ТС]
В интернете есть примеры, как декомпилировать код Пайтон, используя
Python
1
import dis
В одном примере производится анализ с помощью декомпиляции, почему pow(3,89) работает медленнее 3**89

Добавлено через 1 час 23 минуты
Пока что полностью не понял, что является новым синтаксисом Cython. На этой странице https://cython.readthedocs.io/... asses.html для фрагментов кода по две кнопки, при нажатии на которые синтаксис меняется.

Перевод https://cython.readthedocs.io/... /pure.html
В некоторых случаях желательно ускорить код Python, не теряя возможности запускать его с помощью интерпретатора Python. Хотя скрипты на чистом Python могут быть скомпилированы с помощью Cython, это обычно приводит к увеличению скорости примерно на 20%-50%.

Помимо этого, Cython предоставляет языковые конструкции для добавления статической типизации и cythonic-функций в модуль Python, чтобы он работал намного быстрее при компиляции, но при этом позволял его интерпретировать. Это достигается с помощью расширяющего файла .pxd, с помощью аннотаций типов Python (в соответствии с PEP 484 и PEP 526) и/или с помощью специальных функций и декораторов, доступных после импорта модуля magic cython. При необходимости все три способа можно комбинировать, хотя в проектах обычно выбирают конкретный способ упростить управление информацией о статическом типе.

Хотя обычно это не рекомендуется вместо написания прямого кода Cython в файле .pyx, для этого есть законные причины — более простое тестирование и отладка, сотрудничество с разработчиками, использующими чистый Python, и т. д. В чистом режиме вы более или менее ограничены кодом. которые могут быть выражены (или, по крайней мере, сэмулированы) в Python, плюс объявления статического типа. Все остальное можно сделать только в файлах .pyx с расширенным синтаксисом языка, потому что это зависит от особенностей компилятора Cython.
0
Эксперт .NET
 Аватар для Usaga
14364 / 9465 / 1360
Регистрация: 21.01.2016
Сообщений: 35,689
02.08.2022, 14:07
Цитата Сообщение от supmener Посмотреть сообщение
Пока что полностью не понял, что является новым синтаксисом Cython.
Вы не это не поняли. Вы не поняли, что все эти изыскания на тему производительности вообще не имеют смысла, без наличия медленного кода.

Писать быстрый код - скил, который приходит после скила "писать рабочий код". Это уже вопрос более тонкой настройки своей писанины. Вы же ещё не способны написать даже очень медленный код. И понимания того, что вы тут ссылками приводите у вас нет и не выработается без практики.

Или вы решили, что если прикинетесь столбом, который не понимает слов и не слышит советов, то рано или поздно вы добьётесь успеха? Типа, если долго биться головой об пол, то будет толк?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.08.2022, 14:07

Потребление памяти
Подскажите, где можно посмотреть сколько памяти выделяет устройство под сторонние программы (например айпад1 - 80 мб)?

Потребление памяти
Добрый день. У меня есть программа, которая передает данные из StringGrida в таблицу SQL Server 2000. Используется ADOConnection,...

Потребление памяти
Приветствую всех! Прошу помощи в решении проблемы. Последнею неделю поигрывал в Subnautica и все было замечательно. После перерыва в пару...

Потребление памяти
В среднем, во сколько раз отличается потребление памяти у 32 и 64 битных версий явы? Используются Java EE, hibernate, spring...

Потребление памяти
Привет всем, подскажите парни.Это нормально? Мне кажется что то у меня большое потребление памяти.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
140
Ответ Создать тему
Новые блоги и статьи
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru