Разбить на многопоток. Python

Программа ищет слово в нескольких файлах (Поиск слова "Yes", пример содержания файла "0 sp Yes yes S". Необходимо переделать код под многопоток, но опыта с этим в пайтоне не имею. Особенно не очень представляю, как переделать читание файлов. Буду рад любой помощи.

import os
path = r'C:\Users\Admin\Desktop\project1'
word = 'Yes'
count = 0
for root, dirs, files in os.walk(path):
    for file in files:
        if file.lower()[-4:] == '.txt':
            with open(os.path.join(root, file)) as in_put:
                if not word in in_put.read():
                    print('-')
                else:
                    in_put.seek(0)
                    for row, line in enumerate(in_put):
                        if word in line:
                            count += 1
print(f'Найденных слов: {count}')

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

Автор решения: CrazyElf

Выигрыш этой затеи сомнителен в плане производительности - в основном всё упрётся в скорость чтения файлов и, в случае HDD, процесс может даже замедлиться, потому что HDD долго "перескакивает" с одного файла на другой.

Но можете попробовать переделать обход файлов на генератор, а потом "скормить" этот генератор в multiprocessing.Pool.map, написав отдельную функцию для подсчёта нужных штук в одном конкретном файле. Потом собираете результаты Pool.map и складываете их. Всё.

→ Ссылка
Автор решения: BoBoLink
from concurrent.futures import ThreadPoolExecutor, as_completed


def open_file(filename):
    files = {
        'file1': '0 sp Yes yes S',
        'file2': 'No Yes',
        'file3': 'No 0 S sp',
    }
    return files.get(filename, '')


def find_words(filename, word):
    file_content = open_file(filename)
    return file_content.count(word)


WORD = 'Yes'
with ThreadPoolExecutor(max_workers=8) as executor:  # Max workers up to threads in your pc
    features = [executor.submit(find_words, filename=f, word=WORD) for f in ('file1', 'file2', 'file3')]

count = sum(feature.result() for feature in as_completed(features))
print(f'Найденных слов: {count}')
→ Ссылка