Я бы хотел провести интеллектуальный анализ данных в больших масштабах. Для этого мне нужен быстрый сканер. Все, что мне нужно, это что-то загрузить веб-страницу, извлечь ссылки и рекурсивно следовать за ними, но не посещая один и тот же URL дважды. По сути, я хочу избежать зацикливания.
Я уже написал сканер на python, но он слишком медленный. Я не могу насытить 100-мегабитную линию этим. Максимальная скорость ~ 40 URL / сек. и по некоторым причинам трудно получить лучшие результаты. Это похоже на проблему с многопоточностью / сокетами Python. Я также столкнулся с проблемами с сборщиком python gargabe, но это было решаемо. Процессор не является узким местом между прочим.
Итак, что я должен использовать, чтобы написать сканер, который будет максимально быстрым, и как лучше всего избежать циклов во время сканирования?
EDIT:
Решением было объединить модули multiprocessing
и threading
. Создайте несколько процессов с несколькими потоками на процесс для лучшего эффекта. Создание нескольких потоков в одном процессе неэффективно, а несколько процессов с одним потоком потребляют слишком много памяти.