python работа с файлами, мультипроцесинг или многопоточность?

Есть код, который меняет расположение файла, параллельно сортирует в зависимости от типа., но делает это очень медленно и не использует хотя бы на половину ресурсы пк. Подскажите как сюда внедрить многопоточность или мультипроцесинг, посмотрел кучу примеров но дойти пока не могу.


    for subdir, dirs, files in os.walk(mypath):
        for file in files:
            filepath = subdir + os.sep + file
    
            if filepath.endswith(".*"): # тип файла
    
                # cоздание пути
    
                if check_filepath == check_pth:  # проверка существование
                    break
    
                else:  # cоздание папки
    
                    fpath.parent.mkdir(parents=True, exist_ok=True)
    
                    if not os.path.isfile(fpath):  # в случае копии переместить туда-то
                        os.rename(filepath, fpath)
    
                    else:
                        check_pth.parent.mkdir(parents=True, exist_ok=True)
                        os.rename(filepath, check_pth)
                        break
    
            elif filepath.endswith(".*"): # другой тип файла
                # cоздание пути
    
                if check_filepath == check_pth:  # проверка существование
                    break
    
                else:  # cоздание папки
    
                    fpath.parent.mkdir(parents=True, exist_ok=True)
    
                    if not os.path.isfile(fpath):  # в случае копии переместить туда-то
                        os.rename(filepath, fpath)
    
                    else:
                        check_pth.parent.mkdir(parents=True, exist_ok=True)
                        os.rename(filepath, check_pth)
                        break


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

Автор решения: eri
for subdir, dirs, files in os.walk(mypath): 

Заменяется на такой код в тредах. Каждый каталог новому треду

from multiprocessing.dummy import Pool

pool=Pool(4)

def filesort(subdir, dirs, files):
       Вложенный код тут

pool.map(filesort, os.walk(mypath) )

Попробуй поэксперементировать с количеством потоков. Но перемещать слишком много файлов одновременно будет медленней.

→ Ссылка