Увеличение кверисета Django с помощью NumPy и Numba
Пожалуйста, мне нужна ваша помощь! У меня есть большой набор Query (20 миллионов строк) в views.py и для каждой строки я хочу сравнить значение автора с входным значением, добавленным "author_value_input". Сравнение производится в методе def levenshteinDistance. Моя проблема в том, что это занимает слишком много времени. Я пробовал использовать numpy, но безуспешно. Не могли бы вы подсказать, какие изменения мне нужно внести, чтобы сделать это более эффективным? Могу ли я использовать Numpa jit и если да, то как? У меня AMD gpu.
from WebSite.models import Bibliography
def listing_api(request):
author_value_input = request.GET.get("author_value_input", "")
selectedSim = request.GET.get("selectedSim", "")
slider_value = request.GET.get("slider_value", 10)
selectedSim=str(selectedSim);
slider_value_int=float(slider_value);
results = Bibliography.objects.all()
author_demo=[]
if (selectedSim=="ls"):
paginator = Paginator(results, 1000000)
for page_number in paginator.page_range:
page = paginator.page(page_number)
for obj in page.object_list:
if (levenshteinDistance(obj.get("author"), author_value_input) < slider_value_int):
author_demo.append(obj.get("author"))
keywords = Bibliography.objects.filter(author__in = author_demo)
def levenshteinDistance(s1, s2):
if len(s1) > len(s2):
s1, s2 = s2, s1
distances = range(len(s1) + 1)
for i2, c2 in enumerate(s2):
distances_ = [i2+1]
for i1, c1 in enumerate(s1):
if c1 == c2:
distances_.append(distances[i1])
else:
distances_.append(1 + min((distances[i1], distances[i1 + 1], distances_[-1])))
distances = distances_
return distances[-1]