use*_*551 6 python performance loops cmd progress
我有一个小的Python脚本,它将POST请求发送到服务器并获得它们的响应.
它迭代10000次,我设法使用以下命令在命令提示符中打印当前进度:
code=current_requestnumber
print('{0}/{1}'.format(str(code),"10000"),end="\r")
Run Code Online (Sandbox Code Playgroud)
在每个循环结束时.
因为这涉及与网络服务器的交互,我想显示当前的平均速度(每2秒更新一次).
命令提示符底部的示例如下:
(1245/10000),6.3次/秒
我该如何实现这一目标?
小智 12
您可以tqdm为此使用库。一个简单的例子是
from tqdm import tqdm
for i in tqdm(range(1e20)):
##LOOP BODY
Run Code Online (Sandbox Code Playgroud)
这将打印当前迭代、迭代/秒、ETA 和一个不错的进度条
例如
21%|???????????????????? 21/100 [01:45<04:27, 3.39s/it]
Run Code Online (Sandbox Code Playgroud)
您可以像这样获得每秒的总平均事件数:
#!/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)
Run Code Online (Sandbox Code Playgroud)
在这个例子中打印大约10个.请注意我使用的timestamp方法datetime只能在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))
Run Code Online (Sandbox Code Playgroud)
在这里,我将保留最后10次迭代的持续时间列表,然后我可以使用它来获取每秒的平均事件数.
| 归档时间: |
|
| 查看次数: |
3515 次 |
| 最近记录: |