Зробив ось таке завантаження словників:
def load_dictionaries(self):
"""Завантаження словників."""
for path in self.path_to_dic.splitlines():
if path:
for file in os.listdir(path):
if file.endswith(".txt"):
with (open(os.path.join(path, file), 'rb')
as file):
with mmap.mmap(file.fileno(), 0,
access=mmap.ACCESS_READ) as mmap_obj:
full_dict_temp = mmap_obj.read().decode()
self.full_dict += full_dict_temp
self.index_dict = {}
for match in re.finditer(
r'\b^[А-ЩЬЮЯҐЄІЇ;:́`’\-\'0-9 ]+\b|\b^[A-Z-:;\'0-9 ]+\b',
self.full_dict, re.M):
word = re.sub(r'[^\w\-;:\']', '', match.group())
if (match.group() in self.index_dict.keys()):
self.index_dict[word+'_2'] = (match.span())
else:
self.index_dict[word] = (match.span())
for line in self.index_dict.keys():
self.pref_tree.insert(line)
Це частина класу. Перебираються наявні в налаштуваннях шляхи до словників,
створюється один великий словник(Python-словник) із одного або кількох словників, завантажених із файлів txt,
потім з Python-словника створюється словник із індексами(слово: його положення у великому словнику).
А в кінці йде сортування слів із словника з індексами по префіксному дереву.
Питання: як оптимізувати цей процес, щоб зробити його швидшим?
Помітив, що коли завантажую багато словників програма запускається впродовж декількох секунд.
З іншого боку, Goldendict, що має більше активних словників завантажується майже миттєво,
але його завантаження якось пов'язане з кешем. Бо коли чищу його, Goldendict теж починає вантажитися
впродовж кількох секунд, наново завантажує активні словники.