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

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

21.07.2022, 07:52. Показов 24333. Ответов 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
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
17.08.2022, 21:33
Студворк — интернет-сервис помощи студентам
Вот именно.

Добавлено через 51 секунду
Еще бы ты хоть что-то понимал из вышенаписанного
0
Эксперт .NET
 Аватар для Usaga
14807 / 9580 / 1368
Регистрация: 21.01.2016
Сообщений: 36,086
18.08.2022, 02:55
Дальтоник Джо не оставляет попытки подобрать краску для стен в прихожей...
2
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
18.08.2022, 07:39  [ТС]
Написано (перевел):
Некоторые дистрибутивы Linux предоставляют пакет pypy. Обратите внимание, что для установки дополнительных модулей, требующих компиляции, вам может потребоваться установить дополнительные пакеты, такие как pypy-dev. Это будет отображаться как ошибка об «отсутствующем Python.h». В дистрибутивы пока не входит много пакетов, готовых к pypy. Если вам требуются дополнительные модули, мы рекомендуем создать виртуальную среду и использовать pip. Если вам требуются скомпилированные (c-extension) модули, такие как SciPy, мы рекомендуем вам использовать conda, который работает в Windows10, macOS и Linux x86_64. С лета 2022 года мы рекомендуем вам использовать версию pypy 3.7, поскольку миграция (создание бинарных пакетов) для 3.8 и 3.9 все еще продолжается:
doc.pypy.org/en/latest/install.html
А на странице закачки есть 3.8 и 3.9

Примечание

SSL-сертификаты

Хотя бинарные файлы Linux поставляются с библиотекой OpenSSL, они не предоставляют хранилище сертификатов для SSL-сертификатов. Если вы хотите использовать модуль SSL, вам понадобится действующее хранилище сертификатов. Вы можете использовать пакет certifi и установить для SSL_CERT_FILE значение certifi.where() или установить сертификаты вашей платформы, которые должны быть обнаружены модулем _ssl.
doc.pypy.org/en/latest/install.html
В Линукс в виртуальном окружении
https://techoverflow.net/2020/... 0-seconds/

https://vedmark.ru/?p=1704 Установка PyPy в Windows
Code
1
2
3
4
5
virtualenv -p pypy3 myprojectdir
 
либо
 
virtualenv -p pypy myprojectdir
PIP в PYPY:
После установки pypy можно столкнуться с проблемой отсутствия pip. В этом случае выполните команду: pypy -m ensurepip

Обратите внимание, что pypy-евский pip лежит в папке bin, смежной с pypy.exe, внутри вашего pypy окружения. Если установлена старая версия, то обновить можете так

pypy -m pip install --upgrade pip
Волнует вопрос, могут ли быть конфликты между установленным обычным Пайтон и Pypy, несмотря на то, что установлено в виртуальном окружении и как правильно действовать, чтобы этого избежать, если это имеет место быть?
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
18.08.2022, 07:42
Цитата Сообщение от supmener Посмотреть сообщение
Волнует вопрос, могут ли быть конфликты между установленным обычным Пайтон и Pypy?
по шкале от 1 до 10, насколько сильно волнует?
3
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
18.08.2022, 08:15  [ТС]
Как исправить ошибку?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from numba import jit
import os
 
os.chdir('c:\\pitoner\\') #смена папки
print(os.getcwd()) # напечатать текущую рабочую папку
 
@jit
def test():
    r = dir(str)
    i = 0
    while i < len(r):
        print(help('str.' + r[i]))
        i+=1
test()
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
PS L:\Python\parsing\1 BeautifulSoup\Python_Prog исходники\E-parsers-master\E#02> & C:/Python310/python.exe c:/pitoner/help.py
c:\pitoner
c:\pitoner\help.py:7: NumbaWarning:
Compilation is falling back to object mode WITH looplifting enabled because Function "test" failed type inference due to: Untyped global name 'dir': Cannot determine Numba type of <class 'builtin_function_or_method'>
 
File "help.py", line 9:
def test():
    r = dir(str)
    ^
 
  @jit
C:\Python310\lib\site-packages\numba\core\object_mode_passes.py:151: NumbaWarning: Function "test" was compiled in object mode without forceobj=True.
 
File "help.py", line 8:
@jit
def test():
^
 
  warnings.warn(errors.NumbaWarning(warn_msg,
C:\Python310\lib\site-packages\numba\core\object_mode_passes.py:161: NumbaDeprecationWarning: 
Fall-back from the nopython compilation path to the object mode compilation path has been detected, this is deprecated behaviour.
 
For more information visit https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit
 
File "help.py", line 8:
@jit
def test():
^
 
  warnings.warn(errors.NumbaDeprecationWarning(msg,
Help on wrapper_descriptor in str:
 
str.__add__ = __add__(self, value, /)
    Return self+value.
 
None
Help on class type in str:
 
str.__class__ = class type(object)
 |  type(object) -> the object's type
 |  type(name, bases, dict, **kwds) -> a new type
 |
 |  Methods defined here:
 |
 |  __call__(self, /, *args, **kwargs)
 |      Call self as a function.
 |
-- Далее  --
Добавлено через 9 минут
Если что, код писался с целью посмотреть, что будет, если сделать так Как пользоваться встроенной в Python справкой?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
18.08.2022, 08:20
Цитата Сообщение от supmener Посмотреть сообщение
re.compile
Ок, а теперь объясни, как работает без него (это очень просто и забавно) и за счёт чего становится "быстрее" с ним.

Добавлено через 3 минуты
Цитата Сообщение от supmener Посмотреть сообщение
Untyped global name 'dir': Cannot determine Numba type of <class 'builtin_function_or_method'>
Вот-вот, а тебе говорили, что эта "компиляция питон" - не серебряная пуля. Есть compile-time и runtime. dir - это встроенная функция компилятора и для компилятора не описана.
2
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
18.08.2022, 08:36  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
за счёт чего становится "быстрее" с ним
Возможно за счет кэширования результатов предыдущего прохода с ним.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
18.08.2022, 08:39
Вот и не угадал, кешируют стандартные методы re.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
def _compile(*key):
    # internal: compile pattern
    pattern, flags = key
    bypass_cache = flags & DEBUG
    if not bypass_cache:
        cachekey = (type(key[0]),) + key
        try:
            p, loc = _cache[cachekey]
            if loc is None or loc == _locale.setlocale(_locale.LC_CTYPE):
                return p
        except KeyError:
            pass
    if isinstance(pattern, _pattern_type):
        if flags:
            raise ValueError('Cannot process flags argument with a compiled pattern')
        return pattern
    if not sre_compile.isstring(pattern):
        raise TypeError, "first argument must be string or compiled pattern"
    try:
        p = sre_compile.compile(pattern, flags)
    except error, v:
        raise error, v # invalid expression
    if not bypass_cache:
        if len(_cache) >= _MAXCACHE:
            _cache.clear()
        if p.flags & LOCALE:
            if not _locale:
                return p
            loc = _locale.setlocale(_locale.LC_CTYPE)
        else:
            loc = None
        _cache[cachekey] = p, loc
    return p
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
18.08.2022, 08:42  [ТС]
Также прочитал, что re.match может быть быстрее, потому что она точно знает, где начинать искать.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
18.08.2022, 08:55
Цитата Сообщение от supmener Посмотреть сообщение
потому что она точно знает, где начинать искать
Этого можно добиться и от re.search с помощью одного (!) символа.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
22.08.2022, 19:24  [ТС]
Компиляция для Андроид https://chaquo.com/chaquopy/do... d-bytecode

По мотивам темы Как программировать на Python на планшете с Android в дорожных условиях?
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
20.12.2022, 13:54  [ТС]
О-символика
https://learnxinyminutes.com/d... tation-ru/
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.12.2022, 15:22
Цитата Сообщение от supmener Посмотреть сообщение
О-символика
Гы-гы, supmener впервые услышал об О-большое Держи для питона и вызубри: https://wiki.python.org/moin/TimeComplexity
1
20.12.2022, 15:25

Не по теме:

Уже предвкушаю новые темы на подобие: "Я решил проверить строку 18 и у меня не сошлось. В доках не правильно."

0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.12.2022, 15:27
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Держи для питона и вызубри
Опять мимо. ТС не умеет в английский
0
Эксперт .NET
 Аватар для Usaga
14807 / 9580 / 1368
Регистрация: 21.01.2016
Сообщений: 36,086
20.12.2022, 15:28
Цитата Сообщение от supmener Посмотреть сообщение
О-символика
https://learnxinyminutes.com/d... tation-ru/
Может ты себе бумажный блокнот купишь? Это не дорого.
1
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.12.2022, 15:29
По крайней мере эта ссылка единственная, что мне находилось про быстродействие стандартных типов данных в питоне.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
27.12.2022, 17:45
Эй, supmener, ты уже пробовал Codon?
Стартап Exaloop опубликовал код проекта Codon, развивающего компилятор для языка Python, способный генерировать на выходе чистый машинный код, не привязанный к Python runtime. Компилятор развивается авторами Python-подобного языка Seq и позиционируется как продолжение его развития. Проектом также предлагается собственный runtime для исполняемых файлов и библиотека функций, заменяющая библиотечные вызовы на языке Python. Исходные тексты компилятора, runtime и стандартной библиотеки написаны с использованием языков C++ (с привлечением наработок из LLVM) и Python, и распространяются под лицензией BSL (Business Source License).
https://opennet.ru/58395-codon
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
27.12.2022, 17:49
Рыжий Лис, что ж ты творишь?
3
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
10.03.2023, 19:11  [ТС]
https://github.com/charliermarsh/ruff
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.03.2023, 19:11

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
240
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru