Заисает программа
-
Здравствуйте, написал простой скрипт парсинга активной ссылки на сайтах на GET запросах. Выставляю более 10 потоков и программа зависает, скрипт работает, но интерфейс недоступен, проц не грузит более 13%. При 1-3 потоках работает, но этого мало.
Оборачивал, в цикл данный скрипт, думал, что на создание потока тратятся ресурсы и поэтому зависает, но нет тоже самое! И так же проверял на другой системе.Компьютер не слабый:
Intel Core i7 4770K
16 Gb оперативки
SSD
Скрипт обрезанный, многие я вещи выкинул, что бы легче было читать и понимать.0_1502527670342_GET_URL_ver2.xml
Файл с базой url:
0_1502528565192_urls2.txtФайл с ссылками, которые нужно найти:
0_1502528804884_target2.txt
-
Оффтоп: уже давно есть программа для этого, более того она чекает ноуиндекс, роботс, ноуфоллоу...еще пара плюшек. Многопоток. 0_1502562889372_EasyBLanalizer.zip
-
Она не работает с файлами больше 5 к строк. У меня файл на 6 лямов.
-
@myweb101
Здравствуйте, падение производительности происходит из-за того, что перед каждым xpath запросом страница парсится заново. Это происходит 8 раз в каждом потоке.Этого можно избежать используя действия парсинга из модуля http клиента. Так нагрузка на процессор станет меньше в 7/8 раз, потому что эти методы кешируют преобразование страницы в дерево элементов.
Пример:
get_url_ver3.xmlЕсли вы хотите сделать нагрузку еще меньше, то вы можете брать код страницы, проверять его на наличие строк
bit.ly
илиgoo.gl
, и только в том случае, если они присутствуют в коде, использовать менее быстрый xpath.