Как ускорить вложеный цикл пайтон

Пытался нумбу подтянуть, но так и не вышло, постоянные ошибки. Код берет 2 файла csv и сравнивает по заданому кртитерию.

import csv
import datetime
import itertools
import os
# from auth import *
from tqdm import tqdm

def read_csv(file_name):
    result = []
    with open(f'{file_name}', encoding='utf8') as f1:
        reader = csv.reader(f1)
        for row in reader:
            result.append(row)
    return result


# def checker_for_new_n_modified(old_file, new_file, monitoring_file='monitoringdata', path=FILE_PATH_MONITORING):
def checker_for_new_n_modified(old_file, new_file, monitoring_file='monitoringdata', path=None):
    old, old1 = read_csv(old_file), read_csv(old_file)
    new, new1 = read_csv(new_file), read_csv(new_file)
    lst_new_pr = []
    lst_modified_pr = []
    lst_deleted_pr = []
    temp = set()
    temp1 = set()
    new_: str
    old_: str
    repl = lambda x: x.replace('>', '').strip()
    for old_ in tqdm(old):
        for new_ in new:
            count = 0

            if new_ not in old:
                if new_[0] == old_[0]:
                    if new_[6] != old_[6] or new_[7] != old_[7] or str(repl(new_[5])) == '0' and str(repl(old_[5])) != '0'or str(repl(new_[5])) != '0' and str(repl(old_[5])) == '0':
                        lst_modified_pr.append({
                            'OLD': old_, 'NEW': new_
                        })


            temp1.add(old_[0])
            temp.add(new_[0])
            
    attr_id_prod = temp - temp1
    attr_id_prod1 = temp1 - temp
    # ищем новые товары
    for products in new:
        for id_prod in attr_id_prod:
            if id_prod == products[0]:
                lst_new_pr.append(products)

    for products in old:
        for id_prod in attr_id_prod1:
            if id_prod == products[0]:
                lst_deleted_pr.append(products)

    if len(lst_new_pr) > 0 or len(lst_modified_pr) > 0 or len(lst_deleted_pr) > 0:
        with open(f'{path}{monitoring_file}.csv', 'w', encoding='utf8', newline='') as file:
            fieldnames = ['Код', 'Артикул', 'Статус', 'Найменовання', 'Сертифiкат', 'Залишок', 'Опт', 'РРЦ', 'Изменения']

            w = csv.DictWriter(file, fieldnames=fieldnames)

            if len(lst_modified_pr) > 0:
                w.writeheader()
                for fields in range(len(lst_modified_pr)):
                    ch = 0
                    str_attr = ''
                    ch += 1
                    if str(lst_modified_pr[fields].get('OLD')[6]) != str(lst_modified_pr[fields].get('NEW')[6]) and \
                            ch == 1:
                        str_attr += 'Опт'
                    if str(lst_modified_pr[fields].get('OLD')[7]) != str(lst_modified_pr[fields].get('NEW')[7]) and \
                            ch == 1:
                        str_attr += 'РРЦ'
                    if str(lst_modified_pr[fields].get('OLD')[5]) != str(lst_modified_pr[fields].get('NEW')[5]) and \
                            ch == 1:
                        str_attr += 'Залишок'
                    w.writerow({
                                'Код': lst_modified_pr[fields].get('NEW')[0],
                                'Артикул': lst_modified_pr[fields].get('NEW')[1],
                                'Статус': lst_modified_pr[fields].get('NEW')[2],
                                'Найменовання': lst_modified_pr[fields].get('NEW')[3],
                                'Сертифiкат': lst_modified_pr[fields].get('NEW')[4],
                                'Залишок': lst_modified_pr[fields].get('NEW')[5],
                                'Опт': lst_modified_pr[fields].get('NEW')[6],
                                'РРЦ': lst_modified_pr[fields].get('NEW')[7],
                                'Изменения': str_attr,
                                }
                               )

            if len(lst_new_pr) > 0:
                w.writeheader()
                for data in lst_new_pr:
                    w.writerow({
                                'Код': data[0],
                                'Артикул': data[1],
                                'Статус': data[2],
                                'Найменовання': data[3],
                                'Сертифiкат': data[4],
                                'Залишок': data[5],
                                'Опт': data[6],
                                'РРЦ': data[7],
                                'Изменения': 'Новые товары'})
            if len(lst_deleted_pr) > 0:
                w.writeheader()
                for data in lst_deleted_pr:
                    w.writerow({
                                'Код': data[0],
                                'Артикул': data[1],
                                'Статус': data[2],
                                'Найменовання': data[3],
                                'Сертифiкат': data[4],
                                'Залишок': data[5],
                                'Опт': data[6],
                                'РРЦ': data[7],
                                'Изменения': 'Удаленные'})

        return f'Файл {monitoring_file} создан в {path}'
    else:
        return f'Изменений не найдено'


if __name__ == '__main__':
    checker_for_new_n_modified('testdata3.csv', 'testdata3 — копия.csv')

Ответы (0 шт):