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

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

21.07.2022, 07:52. Показов 21327. Ответов 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
Эксперт .NET
 Аватар для Usaga
14302 / 9387 / 1353
Регистрация: 21.01.2016
Сообщений: 35,392
30.12.2024, 07:34
Студворк — интернет-сервис помощи студентам
supmener, да.
1
262 / 37 / 7
Регистрация: 03.02.2025
Сообщений: 135
08.02.2025, 01:09
Здравствуйте. Появилась Python 3.13 Free Threading версия без GIL. Теперь для ускорения вашей программы можно использовать потки. Можно загрузить все потоки вашего компьютера. И программа будет работать во много раз быстрей. Конечно если вы сможете распараллелить программу правильно. Например данная программа загружает все мои потоки на процессоре, а их 16 штук.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
import threading
 
 
def print_square1(num):
    print(num)
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square2(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square3(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square4(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square5(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square6(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square7(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square8(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square9(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square10(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square11(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square12(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square13(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square14(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square15(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
def print_square16(num):
    a = 1
    for a in range(100000000):
        a = a ** 0.3
    #print("Cube: {}".format(num * num * num))
    print(a)
 
if __name__ == "__main__":
    t1 = threading.Thread(target=print_square1, args=(10,))
    t2 = threading.Thread(target=print_square2, args=(10,))
    t3 = threading.Thread(target=print_square3, args=(10,))
    t4 = threading.Thread(target=print_square4, args=(10,))
    t5 = threading.Thread(target=print_square5, args=(10,))
    t6 = threading.Thread(target=print_square6, args=(10,))
    t7 = threading.Thread(target=print_square7, args=(10,))
    t8 = threading.Thread(target=print_square8, args=(10,))
    t9 = threading.Thread(target=print_square9, args=(10,))
    t10 = threading.Thread(target=print_square10, args=(10,))
    t11 = threading.Thread(target=print_square11, args=(10,))
    t12 = threading.Thread(target=print_square12, args=(10,))
    t13 = threading.Thread(target=print_square13, args=(10,))
    t14 = threading.Thread(target=print_square14, args=(10,))
    t15 = threading.Thread(target=print_square15, args=(10,))
    t16 = threading.Thread(target=print_square16, args=(10,))
 
    t1.start()
    t2.start()
    t3.start()
    t4.start()
    t5.start()
    t6.start()
    t7.start()
    t8.start()
    t9.start()
    t10.start()
    t11.start()
    t12.start()
    t13.start()
    t14.start()
    t15.start()
    t16.start()
 
    t1.join()
    t2.join()
    t3.join()
    t4.join()
    t5.join()
    t6.join()
    t7.join()
    t8.join()
    t9.join()
    t10.join()
    t11.join()
    t12.join()
    t13.join()
    t14.join()
    t15.join()
    t16.join()
 
    print("Done!")
Программа тестовая для проверки загрузки всех ядер компьютера. Я ещё начинающий программист так что за некрасивый код не ругайтесь.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2025, 01:09
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
282
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru