Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755

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

21.07.2022, 07:52. Показов 22221. Ответов 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
14330 / 9423 / 1356
Регистрация: 21.01.2016
Сообщений: 35,517
30.12.2024, 07:34
Студворк — интернет-сервис помощи студентам
supmener, да.
1
264 / 38 / 8
Регистрация: 03.02.2025
Сообщений: 142
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
попытка написать игровой сервер на 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 - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru