2015-06-14 160 views
4

我有一個小的Python腳本,它將POST請求發送到服務器並獲得響應。在每個循環結束如何打印每秒迭代次數?

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

它循環10000次,並且我設法使用打印在命令提示當前進度。因爲這涉及到與網絡服務器的交互,所以我想在旁邊顯示當前的平均速度(每2秒更新一次)。然後

在命令提示的底部的一個例子是這樣的:

(10000分之1245),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) 

在這個例子中會請注意,我使用了datetimetimestamp方法,該方法僅在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

謝謝!這很好用! – user2879551

0

計算完成的請求並將其除以程序執行時間?

time.time對獲取時間很有用。剩下的只是將current_requestnumber除以自啓動以來的秒數差異...... 這樣你就可以得到長期平均值。如果您需要快速顯示速度變化,它會變得更加複雜一些,因爲您需要計算最後10秒內的請求數量。 (一個方法就是重新當自上次復位超過10秒已通過櫃檯)