@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Бесконечная прокрутка (в twitter, vk и подобных)
-
В twitter, vk и на многих других сайтах при прокрутке страницы вниз отсутствует кнопка перехода на следующую страницу, при достижении конца страницы через несколько секунд подгружается следующая страница и так далее.
Как в BAS можно реализовать эту пауза, для подгрузки следующей страницы?
В режиме "Запись" прокрутка происходит медленно, успевают подгрузится следующие страницы и нельзя словить элемент, чтобы установить команду "Ждать полной загрузки".
-
@servasw45 привет - используй в конце действий цикла - действие спать выстави паузу - проверь ее на практике
вот тебе пример
0_1479989811254_test_for_vk.xml -
@servasw45 Чтобы ждать пока загрузится страница используйте действие Ждать полной загрузки. Это грубый вариант, но работает везде.
Самый быстрый вариант - Очистить кэшированные данные + Ждать Загрузки Url. Но нужно смотреть урл для каждого сайта отдельно. -
Turutur, спасибо! Увидел твой ответ и последовал твоей рекомендации. После долгих экспериментов написал такой скрипт для считывания новостей с твиттера и записи их в файл:

Первый этап - делается несколько раз прокрутка,
Второй этап - начинается считывание новостей.Правильнее было бы вот так, мне кажется:

То есть, сначала проработать первую страницу, затем прокрутить на вторую страницу, считать все со второй, перейти на третью и т.д.
Только второй вариант (на самом деле был первым моим экспериментом) странно работал.На первой странице размещено и считывается 19 сообщений. Затем включалась прокрутка через FOR и добавлялось еще 19 сообщений. А считывание начиналось с первой страницы по вторую, то есть 19+19 сообщений. На третьем витке цикла FOR прибавляется еще 19 страниц, а считывание начинается снова с первого и всего получается 19+19+19 сообщений.
В общем, эта бесконечная прокрутка - какое-то больное место. В программе Visual Web Ripper, припоминаю, тоже были сложности с таким типом перелистывания страниц.
В BAS после команды Прокрутка надежнее всего использовать Ждать полной загрузки. Но как заставить скрипт продолжать обработку со второй страницы, а не начинать с начала... ? Есть необходимость автоматизировать кое что на web.crowdfireapp.com, а там тоже везде эта прокрутка используется.
Уважаемый support, могли бы Вы придумать какую то функцию, чтобы программа BAS сам находила внизу этот подгружающийся элемент кода и цеплялась за него, как за метку или идентификатор следующей страницы. Потому что после этой бесконечной прокрутки получается одна сплошная страница, только длиннее. Я даже не представляю какие кэшированные данные нужно удалять...
Вот мой скрипт:
0_1480036828172_twitter-parser-news.xmlМожет кто-то усовершенствует или предложит лучший вариант.
-
Но как заставить скрипт продолжать обработку со второй страницы, а не начинать с начала... ?
Сохранять количество постов в переменную и начинать цикл с этой переменной.
Либо обрабатывать данные только после прокрутки на несколько страниц.
Либо получать через кеш результат запроса и обрабатывать его.Уважаемый support, могли бы Вы придумать какую то функцию, чтобы программа BAS сам находила внизу этот подгружающийся элемент кода и цеплялась за него, как за метку или идентификатор следующей страницы.
Попробуйте одно из решений выше.
Я даже не представляю какие кэшированные данные нужно удалять...
Действие, которое я предложил(Очистить кэшированные данные) не получает никаких параметров, его нужно просто вызвать.