def create_sertification(self, instructor, start_date, id_sertification, name, name_center, programma, level, file, template_path, flag, path_file):
        try:
            start = time()
            if flag:
                while True:
                    instructor_dialog = Dialog_digital()
                    instructor_dialog._set_text('ФИО инструктора:')
                    instructor_dialog._set_placeholder('Например, Казаков Александр Геннадьевич')
                    instructor_dialog.resize_textbox()
                    if instructor_dialog.exec() == QDialog.Accepted:
                        instructor = instructor_dialog.get_input()
                        start = time()
                        break
                    else:
                        pass
            else:
                pass
            # print(template_path)
            doc = Document(template_path)
            doc.tables[1].rows[0].cells[0].paragraphs[0].runs[0].text = instructor
            doc.tables[0].rows[0].cells[0].paragraphs[0].runs[0].text = name
            
            for i in range(len(doc.tables[0].rows[2].cells[0].paragraphs[0].runs)):
                doc.tables[0].rows[2].cells[0].paragraphs[0].runs[i].text = ''
            
            doc.tables[0].rows[2].cells[0].paragraphs[0].runs[0].text = f'"{programma}"'
            
            for i in range(len(doc.tables[0].rows[5].cells[0].paragraphs[1].runs)):
                doc.tables[0].rows[5].cells[0].paragraphs[1].runs[i].text = ''

            if doc.tables[0].rows[2].cells[0].paragraphs[0].runs[0].text == '"Контроль и управление скважиной при газонефтеводопроявлениях при бурении и реконструкции скважин с наземным или подводным противовыбросовым оборудованием"':
                doc.tables[0].rows[5].cells[0].paragraphs[1].runs[0].text = f'Бурение. Наземное и подводное ПВО. Уровень {level}'
            else:
                doc.tables[0].rows[5].cells[0].paragraphs[1].runs[0].text = f'Наземное ПВО. Уровень {level}'

            doc.tables[0].rows[3].cells[0].paragraphs[1].runs[0].text = name_center

            for i in range(len(doc.tables[0].rows[7].cells[0].paragraphs[1].runs)):
                doc.tables[0].rows[7].cells[0].paragraphs[1].runs[i].text = ''

            doc.tables[0].rows[7].cells[0].paragraphs[1].runs[0].text = self.process_date(start_date, 0, 0)
            
            for i in range(len(doc.tables[0].rows[7].cells[3].paragraphs[1].runs)):
                doc.tables[0].rows[7].cells[3].paragraphs[1].runs[i].text = ''
            
            doc.tables[0].rows[7].cells[3].paragraphs[1].runs[0].text = self.process_date(start_date, 2, 1)
            
            for i in range(len(doc.paragraphs[5].runs)):
                doc.paragraphs[5].runs[i].text = ''

            if doc.tables[0].rows[2].cells[0].text == '"Контроль и управление скважиной при газонефтеводопроявлениях при внутрискважинных работах с применением гибких насосно-компрессорных труб"':
                if level == '3':
                    doc.paragraphs[5].runs[0].text = doc.paragraphs[5].text[:2] + "ГБП-" + id_sertification
                else:
                    doc.paragraphs[5].runs[0].text = doc.paragraphs[5].text[:2] + "ГСП-" + id_sertification
            elif doc.tables[0].rows[2].cells[0].text == '"Контроль и управление скважиной при газонефтеводопроявлениях при бурении и реконструкции скважин с наземным противовыбросовым оборудованием"' or doc.tables[0].rows[2].cells[0].text == '"Контроль и управление скважиной при газонефтеводопроявлениях при бурении и реконструкции скважин с наземным или подводным противовыбросовым оборудованием"':
                if level == '3':
                    doc.paragraphs[5].runs[0].text = doc.paragraphs[5].text[:2] + "ББП-" + id_sertification
                else:
                    doc.paragraphs[5].runs[0].text = doc.paragraphs[5].text[:2] + "БСП-" + id_sertification
            elif doc.tables[0].rows[2].cells[0].text == '"Контроль и управление скважиной при газонефтеводопроявлениях при текущем и капитальном ремонте скважин"':
                if level == '3':
                    doc.paragraphs[5].runs[0].text = doc.paragraphs[5].text[:2] + "КБП-" + id_sertification
                else:
                    doc.paragraphs[5].runs[0].text = doc.paragraphs[5].text[:2] + "КСП-" + id_sertification
            data = f'{name}\n{programma}\n{name_center}\n{doc.tables[0].rows[5].cells[0].paragraphs[1].runs[0].text}\n{doc.tables[0].rows[7].cells[0].paragraphs[1].runs[0].text} - {doc.tables[0].rows[7].cells[3].paragraphs[1].runs[0].text}\n{doc.paragraphs[5].runs[0].text}\n{doc.tables[1].rows[0].cells[0].paragraphs[0].runs[0].text}'
            qr = qrcode.QRCode(box_size=20, border=0, version=1)
            qr.add_data(data)
            qr.make(fit=True)
            img = qr.make_image(fill_color='black', back_color="white").convert('RGBA')
            try:
                chdir('..')
                logo = Image.open(f'{path_file}\Лого_НАУС.png')
                logo_size = (int(logo.width * 1.5), int(logo.height * 1.5))
                logo = logo.resize(logo_size, Image.LANCZOS)
                result_img = Image.new("RGBA", (max(img.width, logo.width), max(img.height, logo.height)), (255, 255, 255, 0))
                result_img.paste(img, ((result_img.width - img.width) // 2, (result_img.height - img.height) // 2))
                result_img.paste(logo, ((result_img.width - logo.width) // 2, (result_img.height - logo.height) // 2), logo)
                chdir(f'Сертификаты {file[:-5]}')
            except Exception as e:
                print('Ошибка:', e)
                chdir(f'Сертификаты {file[:-5]}')
            temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.png')
            result_img.save(temp_file.name)
            for rel in doc.part.rels.values():
                if 'image' in rel.reltype:
                    rel.target_part._blob = b''
                    rel.target_part._blob = open(temp_file.name, 'rb').read()
                    break
            doc.save(f'НАУС - сетификат {name}.docx')
            print(f'НАУС - сетификат {name}.docx Успешно сохранен {time() - start:.2f} Seconds')
            # sys.stderr = open(devnull, 'w')
            start = time()
            convert(f'НАУС - сетификат {name}.docx', f'НАУС - сетификат {name}.pdf')
            # sys.stderr = sys.__stdout__
            image = convert_from_path(f'НАУС - сетификат {name}.pdf', fmt='png', dpi=350)
            image[0].save(f'ID{id_sertification}.pdf', 'PDF', resolution=350.0)
            print(f'Конвертация в ID{id_sertification}.pdf завершена - {time() - start:.2f} Seconds')
        except Exception as e:
            print(e)

    def file_name(self, file):
        while file[-1] != '.':
            file = file[:-1]
        else:
            file = file[:-1]
        return file

    def create_sertification_wrapper(self, args, flag=False):
        instructor, start_date, id_sertification, name, name_center, programma, level, file, template_path, flag = args
        return self.create_sertification(instructor, start_date, id_sertification, name, name_center, programma, level, file, template_path, flag)

    def delete_dir(self, file):
        try:
            mkdir(f'Сертификаты {file[:-5]}')
        except:
            shutil.rmtree(f'Сертификаты {file[:-5]}')
            mkdir(f'Сертификаты {file[:-5]}')

    def create_sertification_(self):
        try:
            path_file = getcwd()
            path_file_naus = normcase(f'{getcwd()}\НАУС - сетификат.docx')
            try:
                chdir('Заявка')
            except:
                chdir('..')
                chdir('Заявка')
            start, end = -1, 0
            
            while start < end:
                dialog_digital = Dialog_digital(self)
                dialog_digital.set_validation()
                dialog_digital._set_text('С какой группы начать вбивать данные в протоколы?\nВведите число')
                if dialog_digital.exec() == QDialog.Accepted:
                    if dialog_digital.get_input() != '':
                        start = int(dialog_digital.get_input())
                else:
                    start = -1
                    
                dialog_digital = Dialog_digital(self)
                dialog_digital._set_text('До какой группы вбиваем данные в протоколы?\nВведите число')
                dialog_digital.set_validation()
                dialog_digital._set_placeholder('Например, до 32-ой группы')
                if dialog_digital.exec() == QDialog.Accepted:
                    if dialog_digital.get_input() != '':
                        end = int(dialog_digital.get_input())
                else:
                    end = 0
                    
                if start > end:
                    message = Dialog_msg(self)
                    message.setWindowTitle('НАУС - Ошибка')
                    message.set_text(f'Ошибка {start} > {end}. Такого быть не может', flag=False)
                    if message.exec() == QDialog.Accepted:
                        pass
                    else:
                        break
                else:
                    break
            flag = False
            files_listdir = listdir()
            for session in files_listdir:
                # print(session)
                files = []
                if start <= int(session[:session.find('-')]):
                    chdir(session)
                    for file in next(walk(getcwd()))[2]:
                        if file.endswith('.docx') and file.startswith('Протокол'):
                            files.append(file)
                            
                    pattern = re.compile(r'Протокол 85-2024 от 12.07.24.*')
                    files_temp = [f for f in files if pattern.match(f)]
                    files_temp = sorted(files_temp, reverse=True)
                    if files_temp:
                        files = files_temp[0]
                        
                    for file in files:
                        doc = Document(file)
                        convert(file, f'{self.file_name(file)}-.pdf')
                        image = convert_from_path(f'{self.file_name(file)}-.pdf', fmt='png', dpi=350)
                        image[0].save(f'{self.file_name(file)}.pdf', 'PDF', resolution=350.0)
                        name_center = doc.paragraphs[2].text[15:].replace('“', '"').replace('”', '"').replace('«', '"').replace('»', '"').replace('\t', '')
                        if name_center == 'Общество с ограниченной ответственностью "Международный институт дополнительного образования"':
                            name_center = 'ООО "МИДО"'
                        elif name_center == 'Учебно-тренажерный центр нефтегазового дела по подготовке, переподготовке и повышению квалификации специалистов нефтегазовой отрасли Иркутского национального исследовательского технического университета (УТЦ НГД ИРНИТУ)':
                            name_center = 'УТЦ НГД ИРНИТУ'
                            
                        programma = doc.paragraphs[3].text[40:]
                        start_date = doc.paragraphs[4].text[22:]
                        id_sertification, name, level = [], [], []
                        for i in range(2, len(doc.tables[0].rows)):
                            if doc.tables[0].rows[i].cells[-1].text in '–' or doc.tables[0].rows[i].cells[-1].text in '-' or doc.tables[0].rows[i].cells[-1].text in '':
                                pass
                            else:
                                name.append(doc.tables[0].rows[i].cells[1].text)
                                level.append(doc.tables[0].rows[i].cells[2].text)
                                id_sertification.append(doc.tables[0].rows[i].cells[-1].text.replace('ID', ''))
                                
                        if id_sertification:
                            instructor_dialog = Dialog_instrucotr(self)
                            if instructor_dialog.exec() == QDialog.Accepted:
                                if instructor_dialog.get_input() == 'Один':
                                    chdir('..')
                                    self.delete_dir(file)
                                    chdir(f'Сертификаты {file[:-5]}')
                                    while True:
                                        inst_dialog = Dialog_digital(self)
                                        inst_dialog._set_text('ФИО инструктора:')
                                        inst_dialog._set_placeholder('Например, Казаков А.Г.')
                                        inst_dialog.resize_textbox()
                                        if inst_dialog.exec() == QDialog.Accepted:
                                            instructor = inst_dialog.get_input()
                                            break
                                        else:
                                            flag = True
                                            break
                                    if flag:
                                        break
                                    else:
                                        args_list = [(instructor, start_date, sertification, name[idx], name_center, programma, level[idx], file, path_file_naus) for idx, sertification in enumerate(id_sertification)]
                                        with ProcessPoolExecutor() as executor:
                                            executor.map(self.create_sertification_wrapper, args_list)
                                        # for number, sertification in enumerate(id_sertification):
                                        #     self.create_sertification(instructor, start_date, sertification, name[number], name_center, programma, level[number], file, path_file_naus, False, path_file)
                                        chdir('..')
                                else:
                                    chdir('..')
                                    self.delete_dir(file)
                                    chdir(f'Сертификаты {file[:-5]}')
                                    for number, sertification in enumerate(id_sertification):
                                        self.create_sertification(instructor, start_date, sertification, name[number], name_center, programma, level[number], file, path_file_naus, False, path_file)
                                    chdir('..')
                            else:
                                flag = True
                                break
                        else:
                            chdir('..')
                    if flag:
                        break
                    if session.startswith('Сертификаты') or end < int(session[:session.find('-')]):
                        break
                if flag:
                    break
        except Exception as e:
            print('Не найден протокол', e)

Весь код не переписывай, а только фрагменты, которые надо изменить. У меня проблема с многопоточностью
with ProcessPoolExecutor() as executor:
                                            executor.map(self.create_sertification_wrapper, args_list)
Он попадает в with, заходит в executor, но метод не вызывается. Я проверил с помощью breakpoint