mark 一下~
工作中碰到一个需求,需要在运行中改写某个类的方法,
想到setattr,搜索相关代码时候发现以下这种说法,说是不支持创建方法。
都想要放弃了,但心想还是尝试一下~
如图,发现是可以的~
import pavi
writer = pavi.SummaryWriter('test_pavi')
def hack(self, tag, value, iteration=0):
# if tag == "t2":
# print(value)
if ("_time" in tag) and ("__benchmark" in tag):
print(tag, value)
setattr(pavi.SummaryWriter, "add_scalar", hack)
writer.add_scalar("t1", 1)
writer.add_scalar("t2", 2)
writer.add_scalar("__benchmark_total_time(h)", 3)
writer.add_scalar("__benchmark_pure_training_time(h)", 4)
writer.add_scalar("__benchmark_avg_iter_time(s)", 6)
writer.add_scalar("avg_iter_time(s)", 5)
#输出
__benchmark_total_time(h) 3
__benchmark_pure_training_time(h) 4
__benchmark_avg_iter_time(s) 6