Многопоточность | Проект в проекте
-
@Turutur сделай сначала для каждого отдельно, прощупай программу, а потом обьедени в один комбайн
-
@DrPrime спасибо за участие - просто захотелось немного пофантазировать
-
парсить с помощью запросов, тогда можно и сразу по 5 поисковикам. Либо сделать несколько вкладок и в цикле сделать так, чтобы в каждой вкладке было что то своё. Но не знаю, может ли BAS работать с каждой вкладкой отдельно.
-
@Cruzel said in Многопоточность | Проект в проекте:
парсить с помощью запросов, тогда можно и сразу по 5 поисковикам.
Можно подробнее - это как? с помощью запросов?
С вкладками не получиться - выполнение скрипта идет линейно - можно функции настроить и переменные - но там венигрет получается такой, что путаться начинаешь
-
@Turutur Вашу задумку можно легко реализовать с помощью такого скрипта.
Описание
В начале работы приложения(функция OnApplicationStart) создаем ресурс, туда записываем поисковые движки.
Еще один ресурс создаем для сайтов.Алгоритм работы потока такой - если в первом ресурсе еще остались поисковые движки работаем с ними, если нет - работаем с сайтами.
Для удобства можно разбить работу с поисковыми ресурсами и сайтами на 2 функции.
-
@support спасибо огромное - буду пробовать - не перестаю восхищаться вашим творением!
-
@Turutur Пожалуйста
-
@support пожалуйста сделайте еще один пример проекта в проекте - пример, который был предоставлен Выше скорее всего не применим.
Здесь же кстати небольшая просьба - функция OnnAplicationStart - сделайте ее отображение среди прочих функций и действий скрипта - так как она идет первой по умолчанию и вызывать ее не нужно - пусть отображается, чтобы ее было видно. И не совсем понятно как именно она работает.
- с неее начинается скрипт и она срабатывает первой всегда в независимости от места ее создания?
- если используется несколько потоков - то она срабатывает только в одном потоке?
Дайте пожалуйста развернутый ответ, возможно с примерами где и как может использоваться.
И так к теме - нужна помощь в алгоритме создания следующего шаблона -
например скрипт будет работать в 10 потоков - задача такая - на входе есть 10 аккаунтов -
вначале идет парсинг строки с аккаунтом - авторизация и сбор данных - а уже затем подключаются все имеющиеся аккаунты для обработки данных -как такое реализовать?
-
с неее начинается скрипт и она срабатывает первой всегда в независимости от места ее создания?
Да, и ее не нужно вызывать.
если используется несколько потоков - то она срабатывает только в одном потоке?
Да.
Дайте пожалуйста развернутый ответ, возможно с примерами где и как может использоваться.
Создать ресурс, инициализировать глобальные переменные, очистить папки с временными данными, другими словами сделать все то, что нужно делать только один раз и только в начале работы приложения.
как такое реализовать?
Тоже самое, что в примере выше. Только вместо сайтов - аккаунты и сайты не заполняются вручную в OnAplicationStart а берутся из файла.
Еще раз повторю алгоритм.
Есть 2 функции - для обработки аккаунтов и для обработки данных полученных первой функцией.Если ресурс аккаунты не пуст - вызывается первая функция.
Если ресурс аккаунты пуст - вызывается вторая функция.
-
@support вот подошел к концу второй день - как я пытался переварить информацию которую Вы дали - создать скрипт с одним акком не возникает проблем - но сделать проект в проекте не получается никак - не смог понять предоставленный алгоритм - что-то не срастается - проект не выкладываю и не прошу готовый - так как реально хочу научиться и разобраться! Попробую более детально расписать.
делаю приглашалку в группы одноклассниковвходные - есть список аккаунтов
ссылка на группу куда будем приглашать
ключевая фраза для поиска групп доноровOnApplicationStart[[алгоритм: парсим первый аккаунт - авторизуемся - проверяем авторизацию - вводим ключ в поиск - выставляем выдачу - группы - открытые - искать по тегам - прокрутка 3 раза - парсим группы на выдаче в список]]
<!-- с этого должен начинать работу скрипт - в один поток, по завершении этой функции - начинается сбор данных - в максимальное количество потоков -->
Далее идет обработка и сбор данных - хочу сделать так - парсим строку с аккаунтом - авторизуемся - проверяем авторизацию - берем строку из списка с группами - переходим на страницу пользователей - прокуручиваем 3 раза - парсим пользователей - добавляем в список all_members - по завершению удаляем дубликаты - берем первого пользователя - переходим на страницу - приглашаем в группу.
В один поток все реально нормально работает - как сделать так, чтобы после того какотработала функция OnApplicationStart - то есть одним аккаунтом был получен список групп доноров - чтобы скрипт начинал работать в максимальное количество потоков равное количеству имеющихся аккаунтов в файле????
Как это сделать??? Люди - кто в теме - у кого что было похожее? Гениев типа "можно выполнить код" - просьба не тратить время - ищу способ выполнения стандартными методами BAS. То есть в начале один поток - потом по максимуму!
-
@Turutur могу толькл прежположить, но попробуй в конце выполнения первой функции создать глобальную переменную, и задать ей какое то значение, а уже в начале скрипта поставь цикл forreach, который будет работать до тех пор, пока переменная не будет равна заданному параметру. Получается так, ты запускаешь n-ое количество потоков, но по факту они все сначала будут ждать пока первая функция закончит свою работу, а только потом начнут выполнять заданный далее скрипт. По поводу количества по ов, как ни крути, нужно будет выставлять вручную.
-
@DrPrime - ) спасибо - не сосвсем понял - но буду разбираться - я немогу понять как сделать переход именно на многопоток - так как я использую файл с аккаунтами для авторизауции и OnApplicationStart для старта и сбора, но когда в начале срабатывает OnApplicationStart - он содержит действие авторизации - соответственно - после можно сделать выход - или использовать разные аки для 1 для сбора - а остальные для обработки - но используя действие парсить строку и авторизоваться после OnApplicationStart - в многопотоке не выходит - все равно один поток работает и минус 1 аккаунт - то же не хотелось бы). Плохо, что в BAS нет возможности визуально строить скрипт как в Зенке - простым перетягиванием нужных блоков и действий
-
В OnApplicationStart можно создать ресурс и обрабатывать его многопоточно, как в примере выше.