Простой вопрос, использует ли гигантское регулярное выражение неэффективно в Python. Я строю скрипт для поиска плохих файлов. У меня есть исходный файл, который содержит около 50 "подписей" до сих пор. Список имеет вид:
Djfsid
LJflsdflsdf
fjlsdlf
fsdf
.
.
.
Реальных «консистенций» не существует, поэтому оптомизация списка путем удаления «дубликатов» или проверки «является ли одна запись подстрокой другой записи» мало что даст.
Я в основном не хочу, чтобы ОС шла по каталогу, открывала файл, проверяла подпись, закрывалась и двигалась дальше.
Чтобы ускорить процесс, я разобью список на 50 / n различных подсписков, где N - количество ядер, и у потока есть работа с несколькими записями списка.
Будет ли лучше использовать гигантское регулярное выражение re.search('(entry1|entry2|entry3....|entryK)', FILE_CONTENTS)
или гигант for i in xrange(0,NUM_SUBENTRIES)...if subentry[i] in FILE_CONTENTS...
?
Также это хороший способ многопоточности? Это Unix, поэтому несколько потоков могут работать с одним файлом одновременно. Будет ли доступ к диску в основном мешать мне до такой степени, что многопоточность бесполезна?