@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Поиск в цикле по xpath
-
Нужно перебрать элементы в цикле полученные через поиск по Xpath
Xpath для элементов цикла у меня такой
/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div/div[7]/div/div[1]/div[3]/div/table/tbody/tr
Цикл перебора работает отлично
но далее мне нужно поискать элементы уже внутри полученных tr
а именно меня интересует
/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div/div[7]/div/div[1]/div[3]/div/table/tbody/tr[2]/td[5]/div[2]/span/span
т.е внутри найденного tr нужно искать /td[5]/div[2]/span/span
пробывал так писать там
/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div/div[7]/div/div[1]/div[3]/div/table/tbody/tr[[[CYCLE_INDEX]]]/td[5]/div[2]/span/span
или так
[[FOR_EACH_XPATH]]>AT>[[CYCLE_INDEX]]>XPATH>/td[5]/div[2]/span/span
не работает -
@gomeapat а вы не пробовали xpath составить попроще? абсолютный это не лучшее решение.
Если вы хотите что то искать внутри получите весь элемент запросом и обращайтесь xpath запросами уже к нему. В басе есть экшены которые это позволяют. Либо если вам нужны эти элементы на самой странице то составьте нормальное xpath выражение. Ну или хотя бы покажите где вы это пытаетесь сделать, Ясновидящих тут нет волшебник только один и он занят. Иначе вам помочь никто не сможет. Но еще раз абсолютный путь это зло. -
@gomeapat said in Поиск в цикле по xpath:
Это нужно для перебора писем в папке inbox ящика на gmail
так как там нет четких аттрибутов id и класс, они там по модному постоянно меняются
поэтому и пытаюсь использовать xpathВы используете абсолютный путь Xpath, это крайне не надёжно. Посмотрите код страницы, найдите статичные атрибуты у необходимых элементов или их родителей и привяжитесь к ним.
Так же советую прочитать мануал по Xpath
https://docs.google.com/document/d/1PdfKMDfoqFIlF4tN1jKrOf1iZ1rqESy2xVMIj3uuV3g/pub
я сам по нему изучал Xpath