Увеличение кверисета 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]
Вернуться на верх