Заисает программа



  • Здравствуйте, написал простой скрипт парсинга активной ссылки на сайтах на 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 лямов.


  • administrators

    @myweb101
    Здравствуйте, падение производительности происходит из-за того, что перед каждым xpath запросом страница парсится заново. Это происходит 8 раз в каждом потоке.

    Этого можно избежать используя действия парсинга из модуля http клиента. Так нагрузка на процессор станет меньше в 7/8 раз, потому что эти методы кешируют преобразование страницы в дерево элементов.

    Пример:
    get_url_ver3.xml

    Если вы хотите сделать нагрузку еще меньше, то вы можете брать код страницы, проверять его на наличие строк bit.ly или goo.gl, и только в том случае, если они присутствуют в коде, использовать менее быстрый xpath.


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.