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) )
Попробуй поэксперементировать с количеством потоков. Но перемещать слишком много файлов одновременно будет медленней.