2015-06-14 3 views
4

У меня есть небольшой скрипт Python, который отправляет POST-запросы на сервер и получает их ответ.Как печатать итерации в секунду?

Он перебирает 10000 раз, и мне удалось напечатать текущий прогресс в командной строке с помощью:

code=current_requestnumber 
print('{0}/{1}'.format(str(code),"10000"),end="\r") 

в конце каждого цикла.

Поскольку это связано с взаимодействием с веб-сервером, я хотел бы показать текущую среднюю скорость рядом с этим тоже (обновляется как каждые 2 секунды).

Пример в нижней командной строке затем будет так:

(1245/10000) 6,3 запросов/сек

Как этого добиться?

ответ

5

Вы можете получить общее среднее число событий в секунду, как это:

#!/usr/bin/env python3 

import time 
import datetime as dt 

start_time = dt.datetime.today().timestamp() 
i = 0 
while(True): 
    time.sleep(0.1) 
    time_diff = dt.datetime.today().timestamp() - start_time 
    i += 1 
    print(i/time_diff) 

Что в этом примере будет напечатайте примерно 10. Обратите внимание, что я использовал метод timestampdatetime, который доступен только в Python 3.

Теперь, если вы хотите рассчитать «текущее» количество событий в секунду, скажем, за последние 10 событий , вы можете сделать это следующим образом:

#!/usr/bin/env python3 

import time 
import datetime as dt 

last_time = dt.datetime.today().timestamp() 
diffs = [] 
while(True): 
    time.sleep(0.1) 

    # Add new time diff to list 
    new_time = dt.datetime.today().timestamp() 
    diffs.append(new_time - last_time) 
    last_time = new_time 

    # Clip the list 
    if len(diffs) > 10: 
     diffs = diffs[-10:] 

    print(len(diffs)/sum(diffs)) 

Здесь я сохраняю список длительностей последних 10 итераций, через которые я могу использовать, чтобы получить среднее количество событий в секунду.

+0

Thankyou! Это работает отлично! – user2879551

0

Подсчитайте готовые запросы и разделите их на момент, когда программа взяла на себя выполнение?

time.time будет полезен для получения времени. Остальное - просто деление current_requestnumber на differnce за считанные секунды с момента запуска ... Таким образом, вы получите среднюю среднюю продолжительность. Если вам нужно быстро показать, когда скорость изменяется, она становится немного сложнее, потому что вам нужно подсчитать количество запросов, скажем, за последние 10 секунд. (Один из способов просто сбросить счетчик, когда прошло более 10 секунд с момента последнего сброса)

Смежные вопросы