在python装饰器中使用print语句,如果调整其 end 从默认的 \n 换成其他字符后,print语句将不会工作,这时需要在 print 语句中将 flush 参数设置为 True 强制刷新缓存,这时就会正常显示了。
代码示例如下:
def count_call(func):
nums = [0, datetime.datetime.now()]
def call_func(*args):
nums[0] += 1
func(*args)
time1 = nums[1]
time2 = datetime.datetime.now()
time_diff = (time2 - time1).seconds
if (time_diff > 10):
print('\r',end='',flush=True)
nums[1] = time2
speed = nums[0] / time_diff
nums[0] = 0
# print('\r',end='')
print('{}\t当前速率:{}条/s'.format(time2.strftime('%H:%M:%S'),speed),end="",flush=True)
return call_func