Я пытаюсь использовать потоки в Python, чтобы читать некоторые файлы (большие файлы, некоторые из них могут превышать размер гигабайта) и анализировать файл, чтобы найти конкретную c информацию, я использую модуль re для который. Проблема в том, что я вижу очень большое время выполнения. Чтение более 4 файлов с последующим анализом файлов на предмет данных занимает у меня более 30 секунд. Ожидается ли это или есть какие-то рекомендации, которые вы можете мне дать, чтобы улучшить это время? Заранее прошу прощения, я уверен, что об этом уже спрашивали на форуме, я действительно пытался найти это сам, но не смог найти нужные слова для поиска этой проблемы.
Ниже мой текущий код :
def get_hostname(file: str) -> str:
"""
Get the hostname from show tech/show running file
:param file: show tech/show running string
:return: the hostname as a string
"""
hostname = re.findall('hostname.*', file, flags=re.IGNORECASE)
if len(hostname) > 0:
return hostname[0].split(' ')[1]
else:
print('Could not find a valid hostname on file ' + file)
def set_file_dictionary():
threads_list = []
def set_file_dictionary_thread(file_name: str):
thread_set_file_dict_time = time.time()
current_file = open(path + file_name, encoding='utf8', errors='ignore').read()
files_dir[get_hostname(current_file)] = current_file
print('set_file_dictionary_thread is ' + str(time.time() - thread_set_file_dict_time))
for file in list_files:
threads_list.append(threading.Thread(target=set_file_dictionary_thread, args=(file, )))
for thread in threads_list:
thread.start()
for thread in threads_list:
thread.join()
Результат:
set_file_dictionary_thread is 12.55484390258789
set_file_dictionary_thread is 13.184206008911133
set_file_dictionary_thread is 16.15609312057495
set_file_dictionary_thread is 16.19360327720642
Main exec time is 16.1940469741821
Спасибо, что прочитали меня ПРИМЕЧАНИЕ. Отступы в порядке, по какой-то причине при копировании из Pycharmand
происходит сбой.