Многопоточность | Проект в проекте



  • @Cruzel said in Многопоточность | Проект в проекте:

    парсить с помощью запросов, тогда можно и сразу по 5 поисковикам.

    Можно подробнее - это как? с помощью запросов?

    С вкладками не получиться - выполнение скрипта идет линейно - можно функции настроить и переменные - но там венигрет получается такой, что путаться начинаешь



  • @Turutur Вашу задумку можно легко реализовать с помощью такого скрипта.

    parsesites.xml

    Описание
    В начале работы приложения(функция OnApplicationStart) создаем ресурс, туда записываем поисковые движки.
    Еще один ресурс создаем для сайтов.

    Алгоритм работы потока такой - если в первом ресурсе еще остались поисковые движки работаем с ними, если нет - работаем с сайтами.
    Для удобства можно разбить работу с поисковыми ресурсами и сайтами на 2 функции.



  • @support спасибо огромное - буду пробовать - не перестаю восхищаться вашим творением!



  • @Turutur Пожалуйста



  • @support пожалуйста сделайте еще один пример проекта в проекте - пример, который был предоставлен Выше скорее всего не применим.

    Здесь же кстати небольшая просьба - функция OnnAplicationStart - сделайте ее отображение среди прочих функций и действий скрипта - так как она идет первой по умолчанию и вызывать ее не нужно - пусть отображается, чтобы ее было видно. И не совсем понятно как именно она работает.

    • с неее начинается скрипт и она срабатывает первой всегда в независимости от места ее создания?
    • если используется несколько потоков - то она срабатывает только в одном потоке?

    Дайте пожалуйста развернутый ответ, возможно с примерами где и как может использоваться.

    И так к теме - нужна помощь в алгоритме создания следующего шаблона -
    например скрипт будет работать в 10 потоков - задача такая - на входе есть 10 аккаунтов -
    вначале идет парсинг строки с аккаунтом - авторизация и сбор данных - а уже затем подключаются все имеющиеся аккаунты для обработки данных -

    как такое реализовать?



  • @Turutur

    с неее начинается скрипт и она срабатывает первой всегда в независимости от места ее создания?

    Да, и ее не нужно вызывать.

    если используется несколько потоков - то она срабатывает только в одном потоке?

    Да.

    Дайте пожалуйста развернутый ответ, возможно с примерами где и как может использоваться.

    Создать ресурс, инициализировать глобальные переменные, очистить папки с временными данными, другими словами сделать все то, что нужно делать только один раз и только в начале работы приложения.

    как такое реализовать?

    Тоже самое, что в примере выше. Только вместо сайтов - аккаунты и сайты не заполняются вручную в OnAplicationStart а берутся из файла.

    Еще раз повторю алгоритм.
    Есть 2 функции - для обработки аккаунтов и для обработки данных полученных первой функцией.

    Если ресурс аккаунты не пуст - вызывается первая функция.
    Если ресурс аккаунты пуст - вызывается вторая функция.



  • @support вот подошел к концу второй день - как я пытался переварить информацию которую Вы дали - создать скрипт с одним акком не возникает проблем - но сделать проект в проекте не получается никак - не смог понять предоставленный алгоритм - что-то не срастается - проект не выкладываю и не прошу готовый - так как реально хочу научиться и разобраться! Попробую более детально расписать.
    делаю приглашалку в группы одноклассников

    входные - есть список аккаунтов
    ссылка на группу куда будем приглашать
    ключевая фраза для поиска групп доноров

    OnApplicationStart[[алгоритм: парсим первый аккаунт - авторизуемся - проверяем авторизацию - вводим ключ в поиск - выставляем выдачу - группы - открытые - искать по тегам - прокрутка 3 раза - парсим группы на выдаче в список]]

    <!-- с этого должен начинать работу скрипт - в один поток, по завершении этой функции - начинается сбор данных - в максимальное количество потоков -->

    Далее идет обработка и сбор данных - хочу сделать так - парсим строку с аккаунтом - авторизуемся - проверяем авторизацию - берем строку из списка с группами - переходим на страницу пользователей - прокуручиваем 3 раза - парсим пользователей - добавляем в список all_members - по завершению удаляем дубликаты - берем первого пользователя - переходим на страницу - приглашаем в группу.

    В один поток все реально нормально работает - как сделать так, чтобы после того какотработала функция OnApplicationStart - то есть одним аккаунтом был получен список групп доноров - чтобы скрипт начинал работать в максимальное количество потоков равное количеству имеющихся аккаунтов в файле????

    Как это сделать??? Люди - кто в теме - у кого что было похожее? Гениев типа "можно выполнить код" - просьба не тратить время - ищу способ выполнения стандартными методами BAS. То есть в начале один поток - потом по максимуму!



  • @Turutur могу толькл прежположить, но попробуй в конце выполнения первой функции создать глобальную переменную, и задать ей какое то значение, а уже в начале скрипта поставь цикл forreach, который будет работать до тех пор, пока переменная не будет равна заданному параметру. Получается так, ты запускаешь n-ое количество потоков, но по факту они все сначала будут ждать пока первая функция закончит свою работу, а только потом начнут выполнять заданный далее скрипт. По поводу количества по ов, как ни крути, нужно будет выставлять вручную.



  • @DrPrime - ) спасибо - не сосвсем понял - но буду разбираться - я немогу понять как сделать переход именно на многопоток - так как я использую файл с аккаунтами для авторизауции и OnApplicationStart для старта и сбора, но когда в начале срабатывает OnApplicationStart - он содержит действие авторизации - соответственно - после можно сделать выход - или использовать разные аки для 1 для сбора - а остальные для обработки - но используя действие парсить строку и авторизоваться после OnApplicationStart - в многопотоке не выходит - все равно один поток работает и минус 1 аккаунт - то же не хотелось бы). Плохо, что в BAS нет возможности визуально строить скрипт как в Зенке - простым перетягиванием нужных блоков и действий



  • @Turutur

    В OnApplicationStart можно создать ресурс и обрабатывать его многопоточно, как в примере выше.


Log in to reply