我利用Django开发,从前端传入两组数到decode_key视图模型中,在这个视图模型中调用算法函数
attack_drawing(data_file_path,trace_number)。但是得到的返回值一直是None。
这是我decode_key视图调用的代码:
def decode_key(request):
if request.method == "POST":
start_seq = int(request.POST.get("startSeq"))
end_seq = int(request.POST.get("endSeq"))
col_diff = end_seq - start_seq + 1
print("执行1")
#print(attack_drawing('ASCAD.h5', col_diff))
print(attack_drawing('ASCAD.h5', 1000))
print("执行2")
#rank_txt_name, rank_pic_name = attack_drawing(file_name, col_diff)
#return JsonResponse({"rank_txt_name": rank_txt_name, "rank_pic_name": rank_pic_name})
return render(request,"decode_key.html")
报错信息如下:
在attack_drawing函数里我有设置返回值return rank_list。
def attack_drawing(data_file_path,trace_number):
# 需要测试的模型路径
model_file_path = "NO.1_-174.pth"
if __name__ == "__main__":
for i in range(256):
key_score[i] = 0.0
test_data_loader, plain_texts = load_ascad(data_file_path, 1, False, 1, wave_flag=True, get_level=0)
# 存储rank的list #
rank_list = []
with torch.no_grad():
for i, data in enumerate(tqdm.tqdm(test_data_loader)): # data是一个元组,包含 att_trace, att_label
if (data_count == trace_number):
break
#省略了中间代码
if (rank == 0 and rank_zero_count == 0):
rank_zero_count = i
rank_list.append(rank)
return rank_list
我新建py文件进行测试,用下列代码
def test():
print(attack_drawing('ASCAD.h5', 1000))
test()
可以得到正确的返回值。
有没有人知道这个问题怎么解决。我这个算法执行时间差不多得7s左右,不知道是不是和js的等待返回操作有关系呢。
万分感谢