一、时间戳计算
记录当前时间,或者用 time.perf_counter() ,精度更高
import time
t0 = time.time()
#t0 = time.perf_counter()
记录结束时间
t1 = time.time()
#t1 = time.perf_counter()
计算时间差
training_time = t1 - t0
处理时间格式
import datetime
def format_time(time):
elapsed_rounded = int(round((time)))
# 格式化为 hh:mm:ss
return str(datetime.timedelta(seconds=elapsed_rounded))
training_time = format_time(training_time)
round() 方法返回浮点数 time 的四舍五入值;
例如:
>>> print "round(80.23456, 2) : ", round(80.23456, 2)
round(80.23456, 2) : 80.23
二、同步时间
错误的方法:
start = time.time()
result = model(input)
end = time.time()
正确的方法:
torch.cuda.synchronize()
start = time.time()
result = model(input)
torch.cuda.synchronize()
end = time.time()
因为在pytorch里面,程序的执行都是异步的。
如果采用代码1,测试的时间会很短,因为执行完end=time.time()程序就退出了,后台的cu也因为python的退出退出了。
如果采用代码2,代码会同步cu的操作,等待gpu上的操作都完成了再继续成形end = time.time()