Я учусь / экспериментирую с итераторами / генераторами в Python, чтобы создать функцию быстрого поиска, которая может искать большой набор данных для подмножества спереди назад и сзади вперед.Я создал класс поиска, который намереваюсь создать поток для его экземпляров, чтобы они выполняли поиск параллельно.Я пытаюсь понять полезность генераторов и хочу знать, если это ситуация, когда они действительно полезны.Как я настроил, набор данных должен быть загружен в память.Есть ли способ сделать это, когда весь набор данных не нужно хранить в переменной.Будем весьма благодарны за любые советы относительно моего подхода к этой идее!
class Search:
def __init__(self, dataset):
self.data = dataset
self.index = 0
self.end = len(dataset) - 1
def __iter__(self):
while self.index <= self.end:
yield self.index
self.index += 1
def __reversed__(self):
i = self.end
while i >= self.index:
yield i
i -= 1
def search(self, subset, reverse=False):
switch = (iter(self), reversed(self))
for index in switch[reverse]:
if self.data[index] != subset[0]:
continue
else:
sub = slice(index, index + len(subset))
if self.data[sub] == subset:
result = index
break
else:
result = 'Not Found!'
return result
x = Search(large_data)
#thread_1:
x.search(sublist)
#thread_2:
x.search(sublist, reverse=True)