Форум сайта python.su
0
Здравствуйте! Прошу помощи с данным вопросом.
Есть код.
import os, os.path, time import _thread as thread list_path = [] #итоговый список всех абсолютных адресов до архивов. exitmutix = [False] * 2 #нужен будет чтоб подождать завершения дочерних потоков. def Worms(adress) : for path_name, list_dir, list_file in os.walk(adress): for to_file in list_file: full_path = os.path.join(path_name, to_file) if full_path.endswith('.rar') or full_path.endswith('.zip') or full_path.endswith('.7z'): #отфильтровывает все, кроме абсолютных адресов до архивов. if full_path in list_path: pass else: if os.stat(full_path).st_size <= 1200000 and int(time.ctime(os.stat(full_path).st_mtime)[-4:]) == 2018: # еще фильтр. отсеивает фаилы больше 1,2 Мб и старше 2018 гг. list_path.append(full_path) # итоговый список всех абсолютных адресов до архивов. #Вариант_1 Worms(r'\\192.168.0.60\общая 53\clowd\Документы клиентов\Организации') Worms(r'\\192.168.0.60\общая 53\fcc') #Вариант_2_потоки thread.start_new_thread(Worms, (r'\\192.168.0.60\общая 53\clowd\Документы клиентов\Организации', 0)) thread.start_new_thread(Worms, (r'\\192.168.0.60\общая 53\fcc', 1)) print("Start thread") while False in exitmutix: pass print('END')
Офлайн
253
Похоже у вас скорость ограничивает не питон а доступ к диску. Который есть просто железка с головкой которая читает данные с поверхности. Раньше читали подряд, а теперь заставляете головку винчестера постоянно прыгать с одного места на другое. На это естественно требуется время.
Офлайн
186
Это что за прикол?
exitmutix = [False] * 2 #нужен будет чтоб подождать завершения дочерних потоков. ### print("Start thread") while False in exitmutix: pass print('END')
Офлайн
0
прошу прощения, забыл указать в примере функции.
def Worms(adress, index) : for path_name, list_dir, list_file in os.walk(adress): for to_file in list_file: full_path = os.path.join(path_name, to_file) if full_path.endswith('.rar') or full_path.endswith('.zip') or full_path.endswith('.7z'): #отфильтровывает все, кроме абсолютных адресов до архивов. if full_path in list_path: pass else: if os.stat(full_path).st_size <= 1200000 and int(time.ctime(os.stat(full_path).st_mtime)[-4:]) == 2018: # еще фильтр. отсеивает фаилы больше 1,2 Мб и старше 2018 гг. list_path.append(full_path) # итоговый список всех абсолютных адресов до архивов. exitmutix[index] = True
Офлайн
253
Не это Вам советуют про join прочитать
https://docs.python.org/3/library/threading.html
Офлайн
0
я знаю что такое join в модуле threading. у меня же вопрос был почему два потока работают медленнее одного потока. но похоже пост #2 уже дал ответ.
Офлайн