Я пишу сканер с конечной целью - создать карту пути, по которому прошел сканер.Хотя я и понятия не имею, с какой скоростью работают другие, и, безусловно, более совершенные сканеры сбрасывают страницы, у меня тактовая частота составляет около 2000 страниц в минуту.
Сканер работает по рекурсивному алгоритму возврата, который я ограничил глубиной.из 15. Кроме того, чтобы предотвратить бесконечный повторный просмотр страниц моим сканером, он сохраняет URL каждой посещенной страницы в списке и проверяет этот список на наличие следующего URL-адреса кандидата.
for href in tempUrl:
...
if href not in urls:
collect(href,parent,depth+1)
Этот метод, кажется, становится проблемой, когда его объем составляет около 300 000 страниц.На данный момент сканер в среднем работает со скоростью 500 страниц в минуту.
Итак, мой вопрос: каков еще один метод достижения той же функциональности при одновременном повышении ее эффективности?
Я подумал, что может помочь уменьшение размера каждой записи, поэтому вместо добавленияВесь URL, я добавляю первые 2 и последние к символам каждого URL в виде строки.Это, однако, не помогло.
Есть ли способ, которым я мог бы сделать это с сетами или что-то в этом роде?
Спасибо за помощь
edit: Как примечание,моя программа еще не многопоточная.Я решил, что должен устранить это узкое место, прежде чем приступить к изучению потоков.