многопоточность в проекте
-
@support а не получается запускать несколько потоков - вернее получается - только все потоки обрабатывают одинаковые данные и прокси здесь ни причем - планирую использовать всего несколько аккаунтов для ускорения процесс - проверка на 3 аках - все норм со стороны ОК РУ - только BAS берет одинаковые данные с файла - соответтвенно скорость выполнения не увеличивается(
-
только BAS берет одинаковые данные с файла
Хотелось бы увидеть настройки ресурса с файлом, а в идеале весь проект.
-
@support - в Ваше отсутствие - я не бросал попыток сделать многопоток самостоятельно - и несколько раз видоизменял проект - добавляя действия в онапликатионстарт, которые необходимо выполнить единожды - такие как список в файл и тому подобное - но перевести их в глобальную переменнцую не удалось( - как впрочем и сделать многопоток - сейчас проект выстроен линейно под один поток - @support пожалуйста покажите на примере моего проекта как его сделать многопоточным - по всем правилам, чтобы небыло пересечений действий в потоках и использования одинаковых ресурсов
0_1477832211837_parse_members_ok.rar
-
@support пожалуйста покажите на примере моего проекта как его сделать многопоточным - по всем правилам, чтобы небыло пересечений действий в потоках и использования одинаковых ресурсов
-
@support спасибо - я даже не подозревал, что нужно так делать - пока изучал пример - у меня чуть питание в голове не отключилось). Огромным недостатком BAS, впрочем как и его колоссальным преимуществом является большое количество комбинаций действий - логически не всегда придешь к нужному решению - иногда это возможно только методом перебора всех возможных вариаций(
-
Возможно проблема уже решена, может даже данный пример уже был описан, но я его просмотрел. Выложу может кому-нибудь будет полезен. Создаем файл указываем его расположение. В онеапликейшен парсим туда ссылки и от туда уже в многопотоке обрабоатываем
0_1477902472311_парс авито.xml
-
@Стас Да, хороший пример, приблизительно так и работает.
-
@support я хочу как то добавить сюда ваш ответ мне из другой темы
http://community.bablosoft.com/topic/416/как-запускать-потоки-поочереди-а-не-все-сразу/16Вы пишите @support said in Как запускать потоки поочереди? а не все сразу:
Это элементарная задача - решается с помощью использования ресурсов. Когда используете ресурс, то БАС сам следит за тем чтобы он был разным для всех потоков. Что может быть проще?
Да это сработало - но строки из ресурса не удалятся - а это значит что мне каждый раз нужно следить за состоянием ресурса - в моем случае - ресурс в список с получением первого элемента и удалением - давал бы лучшую реализацию - то есть я просто мог добавлять данные профилей в файл - а во время работы скрипта строки бы удалялись...
@support said in Как запускать потоки поочереди? а не все сразу:
Я пробовал загружать ресурс в список в онапликатионстарт - но переменные не работают - пробовал так же создать глобальную переменную в онапликатионстарт и присвоить ей значение переменной содержащей список - то же не але... Где вход, где выход???
Зачем пытаться сделать сложно, там где можно сделать легко?
Я пытаюсь сделать легко - ваш процесс построения шаба - гораздо сложнее - потому что он сильно узкий. - Очень много вопросов - по вашей схеме - многопоточный скрипт - это упрощенный до безобразия проект, абсолютно все действия которого - подчеркиваю -ВСЕ! повторяются в каждом потоке И ОНИ ПОВТОРЯЮТСЯ С КАЖДЫМ НОВЫМ УСПЕХОМ! - ЧТО БРЕДОВО САМО ПО СЕБЕ.
В вашем примере в каждом успехном потоке при авторизации вновь и вновь происходит переход на страницу профиля аккаунта - что само по себе подозрительно - если я буду получать данные с 150 групп в 3 потока - то каждый поток посетит страницу профиля в котором авторизован по 50 раз - после каждого посещения группы для сбора данных. И второй момент - в ресурсе у меня всего 4 строки - но в лог выводится 6 удачных сообщений и одно с ошибкой получения ресурса ну и одно что скрипт отработал корректно...
Почему так?@support Как сделать так, чтобы в многопотоке - каждый поток авторизовывался либо по кукам либо по логину - но всего лишь один раз dj время первого успеха -переходил в страницу профиля , а затем только выполнял поставленную задачу. И второе - как сделать так, чтобы после успешного действия удалялась строка из ресурса???
-
И еще - вы показали авторизацию - усовершенствованную - которую не смог понять - я про функцию OkAutoLogin:
Как то нереально все прокачано - не могу понять - ресурса для сохранения кукисов нет - и не нашел действия с указанием пути сохранения - а только лишь название файла собранное в переменную COOKIES_FILE - где будет создан файл и записан результат если не указан путь и ооочччеенньь интересно как BAS в начале функции понимает где искать этот файл - ведь он не подключен через ресурс?
-
Да это сработало - но строки из ресурса не удалятся - а это значит что мне каждый раз нужно следить за состоянием ресурса - в моем случае - ресурс в список с получением первого элемента и удалением - давал бы лучшую реализацию - то есть я просто мог добавлять данные профилей в файл - а во время работы скрипта строки бы удалялись...
Строки удаляются по прошествии некоторого времени если установить галку запись. Также их можно удалить мгновенно используя действие "Удалить Текущий Элемент"
Я пытаюсь сделать легко - ваш процесс построения шаба - гораздо сложнее - потому что он сильно узкий. - Очень много вопросов - по вашей схеме - многопоточный скрипт - это упрощенный до безобразия проект, абсолютно все действия которого - подчеркиваю -ВСЕ! повторяются в каждом потоке И ОНИ ПОВТОРЯЮТСЯ С КАЖДЫМ НОВЫМ УСПЕХОМ! - ЧТО БРЕДОВО САМО ПО СЕБЕ.
Я не понял что именно бредово?
В вашем примере в каждом успехном потоке при авторизации вновь и вновь происходит переход на страницу профиля аккаунта - что само по себе подозрительно - если я буду получать данные с 150 групп в 3 потока - то каждый поток посетит страницу профиля в котором авторизован по 50 раз - после каждого посещения группы для сбора данных.
Ну можете удалить то место, где проверяется правильность авторизации, тогда на страницу профиля входить будет не нужно.
И второй момент - в ресурсе у меня всего 4 строки - но в лог выводится 6 удачных сообщений и одно с ошибкой получения ресурса ну и одно что скрипт отработал корректно...
Не помню что там( Прикрепите сообщения.
Как сделать так, чтобы в многопотоке - каждый поток авторизовывался либо по кукам либо по логину - но всего лишь один раз dj время первого успеха -переходил в страницу профиля , а затем только выполнял поставленную задачу.
Уберите проверку на успешность входа.
И второе - как сделать так, чтобы после успешного действия удалялась строка из ресурса???
Строки удаляются по прошествии некоторого времени если установить галку запись. Также их можно удалить мгновенно используя действие "Удалить Текущий Элемент"
ресурса для сохранения кукисов нет
Вместо этого запись в файл и чтение из файла. Попробуйте создать свою функцию автологина.
ооочччеенньь интересно как BAS в начале функции понимает где искать этот файл - ведь он не подключен через ресурс?
В папке с exe
-
@support Спасибо!
@support said in многопоточность в проекте:
Уберите проверку на успешность входа.
в данном случае этот вариант подойдет, но сложилась такая ситуация: - важной частью шаба для приглашения является первоначальное посещение группы - куда будем приглашать - чтобы она встала в список групп первой и там же получаю ее название, чтобы делать проверку - как быть в этом случае? - я все не могу успокоиться по поводу того что не правильно понимал назначение онапликатионстарт(((( - как мне выполнить такой порядок - авторизация - зашли в группу куда будем приглашать - перешли на страницу пользователя - пригласили - перешли на страницу другого пользователя - пригласили - перешли - пригласили - перешли 50 - пригласили и тд., то есть при новом успехе чтобы поток не переходил каждый раз в группу куда будем приглашать?
-
как мне выполнить такой порядок - авторизация - зашли в группу куда будем приглашать - перешли на страницу пользователя - пригласили - перешли на страницу другого пользователя - пригласили - перешли - пригласили - перешли 50 - пригласили и тд., то есть при новом успехе чтобы поток не переходил каждый раз в группу куда будем приглашать?
Ну так так и делайте, тут не вижу надобности для костылей, какие проблемы с этим скриптом?
-
@support said in многопоточность в проекте:
Ну так так и делайте, тут не вижу надобности для костылей, какие проблемы с этим скриптом?
проблем со скриптом нет - есть проблема с пониманием построения - тем более после того как Вы мне своим примером по рукам надовали - то есть такой алгоритм можно через while по данным в ресурсе выполнить?
-
@Turutur
Алгоритм простойБерем акк из ресурса. Заходим в этот акк(можно подключить автологин по желанию). Берем группу из ресурса. Получаем пользователей в список. Foreach Список пользователей Игнорировать ошибки(на всякий случай) Приглашаем текущего пользователя.
Если при этом установить несколько потоков, то это будет работать для нескольких пользователей одновременно.
-
@support said in многопоточность в проекте:
Получаем пользователей в список.
Foreach Список пользователейу меня комбайн разделен на 3 скрипта - потому как запускать все всесте без надобности - это долгий и ненужный процесс - это я к тому, ч в третьей части - именно в приглашалке я имею входные ресурсы с аккаунтами для авторизации группу куда приглашать и файл со списком пользователей которых нужно приглашать - и в этом случае действие получаем пользователей в список из ресурса не подойдет так как оно будет копировано на все потоки - сдесь я сделал алгоритм такой же как в примере что вы сбрросили - сделал авторизацию (убрал проверку) - затем загружаем пользователя из ресурса проверяем можно ли пригласить - затем проверяем в группе или нет - если нет приглашаем - после в лог пишу кого пригласил - в ресурсе поставил и чтение и запись, чтобы строка использованная удалялсь - ИНТЕРЕСУЕТ ЦИКЛ ЗДЕСЬ КАК РЕАЛИЗОВАТЬ, ВОПРОС (как мне выполнить такой порядок - авторизация - зашли в группу куда будем приглашать - перешли на страницу пользователя - пригласили - перешли на страницу другого пользователя - пригласили - перешли - пригласили - перешли 50 - пригласили и тд., то есть при новом успехе чтобы поток не переходил каждый раз в группу куда будем приглашать?) ПРО ЭТОТ СЛУЧАЙ! - как реализовать цикл по ресурсу? Какой здесь будет алгоритм?
-
@support - чего не хватает в BAS - почему я не могу сделать задуманное - я могу сделать любой скрипт - реально в два клика - но только однопоточный!!!! Почему симбиоз не получается??? Какого то действия не хватает или функции!!! Я пользовался софтом, который работал по схеме - авторизация аккаунтов во всех потоках - проверка вступления в группу в которую приглашаем - если нет вступаем - а потом все потоки берут строку из файла который я прикрепляю и приглашают в группу - причем разница не ощутима что я с одного ака приглашаю, что с 25, либо же 1 ак копирую на 25 строк и приглашаю в 25 потоков. В Bas же приходится переиначивать скрипт, чтобы перевести на многопоток - потому что никак не получается скрипт содержащий список действий однопоточный (авторизация - получения пользователей в файл - цикл по списку пользователей - приглашаем в группу) - перевести в многопоток - я как только не пробовал - ну не работает он так!!! Как -КАК это сделать - я уже месяц пытаюсь - я не спорю, что все работает и все легко - но в многопотоке не работает!!! Функция онапликатионстарт - это вообще - бред! Зачем она нужна? Вы пишите что это функция которая запускается вначале работы скрипта для всех его потоков - ЭТО СУПЕР ЭТО И НУЖНО - НО ПОЧЕМУ Я НЕ МОГУ ИСПОЛЬЗОВАТЬ ЕЕ ДЛЯ ВХОДНЫХ ДАННЫХ? Может можно все таки сделать так, что действия выполненные в ней и переменные с присвоенными значениями сохранялись для остальных функций и действий при последовательном выполнении.
КАК БЫ ЭТО ВЫГЛЯДЕЛО: Нужен скрипт в 25 потоков- ускоряем скрипт - создаем онапликатионстарт
в нем действия - запрет загрузки картинок, wcc? фреймов, скиптов и тд что нужно
*здесь же получаем данные из ресурса в список - здесь же получаем расположение файла
- здесь же создаем список
*ЕСЛИ НУЖНО ПОЛУЧИТЬ КАКИЕТО ДАННЫЕ ИЗ ИНЕТА - ПОЛУЧАЕМ В ОДИН ПОТОК С ИСПОЛЬЗОВАНИЕМ ОДНИХ УЧЕТНЫХ ДАННЫХ - И ОБРАБАТЫВАЕМ
А вот дальше уже идет работа основного скрипта в многопотоке - запуск потока 1 -2- 3- 4- 5- ... -25 - и выполнение прописанных действий.
ПРИЧЕМ САМЫМ ГЛАВНЫМ ОБСТОЯТЕЛЬСТВОМ ЯВЛЯЕТСЯ ТО, ЧТО ПРИ МНОГОПОТОЧНОМ ИСПОЛЬЗОВАНИИ ПЕРЕМЕННЫХ И ДЕЙСТВИЙ С НИМИ СВЯЗАННЫХ - ЭТО ДЕЛАЕТСЯ ВСЕГО ОДИН РАЗ ДЛЯ ВСЕХ ПОТОКОВ - ТО ЕСТЬ ДАННЫЕ НЕ МНОЖАТЬСЯ! Если в теле скрипта при 10 поточном исполнении есть ресурс в список, цикл и так далее - то чтобы это происходило один раз для всех потоков а если это цикл - то все потоки включались в него в него один и действовали сообща.
Просто это уже реально не смешно - когда за месяц не могу скрипт сделать - и поверьте дело не во мне - я zennoposter за несколько часов освоил и применял успешно - и буквально 2 с лишним месяца назад купил лицензию - от которой позже отказался - ждал премиум BAS - в пользу BAS а сейчас даже не знаю - правильно ли сделал. Я ни в коем случае не хочу Вас обидеть - но поставленные Вами приоритеты - неправильные - я имею в виду магазин и тд. Может сначала сделать так. чтобы любой человек пришедший к BAS хотф бы за пару дней разобрался и начал использовать по назначению.... Я реально вижу что народ не задерживается - новички приходят - задают ВСЕГДА ОДНИ И NT ;T ВОПРОСЫ И СВАЛИВАЮТ. Увы пока это так.....
- ускоряем скрипт - создаем онапликатионстарт
-
Получаем пользователей в список.
Foreach Список пользователейв этом случае действие получаем пользователей в список из ресурса не подойдет так как оно будет копировано на все потоки
Речь идет о списке пользователей в группе в одноклассниках.
ПРО ЭТОТ СЛУЧАЙ! - как реализовать цикл по ресурсу? Какой здесь будет алгоритм?
В бесконечном цикле брать ресурс без повторного использования.
Почему симбиоз не получается???
Не знаю, что именно вам не хватает?
В Bas же приходится переиначивать скрипт, чтобы перевести на многопоток
Нет, это не так, чтобы добавить многопоточность в БАС достаточно выставить количество потоков, переделывать скрипт не нужно, в том числе и в том примере, что вы описали.
перевести в многопоток - я как только не пробовал - ну не работает он так!!!
Для того, чтобы перевести в многопоток, достаточно только выставить количество потоков.
Функция онапликатионстарт - это вообще - бред!
Нет не бред, это нужная функция.
Зачем она нужна?
Я уже написал ввам и достаточно подробно.
запрет загрузки картинок, wcc? фреймов, скиптов и тд что нужно
Запрет картинок в OnApplicationStart не будет работать, так как при старте любого потока все данные в браузере очищаются.
здесь же получаем расположение файла
здесь же создаем список
*ЕСЛИ НУЖНО ПОЛУЧИТЬ КАКИЕТО ДАННЫЕ ИЗ ИНЕТА - ПОЛУЧАЕМ В ОДИН ПОТОК С ИСПОЛЬЗОВАНИЕМ ОДНИХ УЧЕТНЫХ ДАННЫХ - И ОБРАБАТЫВАЕМВы можете так сделать, но обмен данными между ней и потоками осуществляется только посредством глобальных переменных, файлов или ресурсов.
ПРИЧЕМ САМЫМ ГЛАВНЫМ ОБСТОЯТЕЛЬСТВОМ ЯВЛЯЕТСЯ ТО, ЧТО ПРИ МНОГОПОТОЧНОМ ИСПОЛЬЗОВАНИИ ПЕРЕМЕННЫХ И ДЕЙСТВИЙ С НИМИ СВЯЗАННЫХ - ЭТО ДЕЛАЕТСЯ ВСЕГО ОДИН РАЗ ДЛЯ ВСЕХ ПОТОКОВ - ТО ЕСТЬ ДАННЫЕ НЕ МНОЖАТЬСЯ! Если в теле скрипта при 10 поточном исполнении есть ресурс в список, цикл и так далее - то чтобы это происходило один раз для всех потоков а если это цикл - то все потоки включались в него в него один и действовали сообща.
Именно так работает система ресурсов. Почему вы не хотите ее использовать?
Просто это уже реально не смешно - когда за месяц не могу скрипт сделать - и поверьте дело не во мне - я zennoposter за несколько часов освоил и применял успешно - и буквально 2 с лишним месяца назад купил лицензию - от которой позже отказался - ждал премиум BAS - в пользу BAS а сейчас даже не знаю - правильно ли сделал. Я ни в коем случае не хочу Вас обидеть - но поставленные Вами приоритеты - неправильные - я имею в виду магазин и тд. Может сначала сделать так. чтобы любой человек пришедший к BAS хотф бы за пару дней разобрался и начал использовать по назначению.... Я реально вижу что народ не задерживается - новички приходят - задают ВСЕГДА ОДНИ И NT ;T ВОПРОСЫ И СВАЛИВАЮТ. Увы пока это так.....
Можете использовать zennoposter, я никого не держу.
-
@support said in многопоточность в проекте:
Можете использовать zennoposter, я никого не держу.
- Я не хочу использовать zenno - я хочу использовать пользовательски удобный BAS с помощью которого в 2 клика можно создать многопоточный скрипт. Хватит платить разработчикам! А зенку я привел не то что в пример, а просто как один из вариантов автоматизации..
@support said in многопоточность в проекте:
Для того, чтобы перевести в многопоток, достаточно только выставить количество потоков.
Увы это не так! - и если оно так, то оно реализовано так, что как-то не так - без обид.
@support said in многопоточность в проекте:
Запрет картинок в OnApplicationStart не будет работать, так как при старте любого потока все данные в браузере очищаются.
А для чего они очищаются - если бы нужно было действие для очистки - его можно вызывать тогда когда оно нужно - а вот функция для настройки вначале работы скрипта с тем алгоритмом что я описал - была бы просто незаменима!
@support said in многопоточность в проекте:
Именно так работает система ресурсов. Почему вы не хотите ее использовать?
Потому что это не совсем понятный, долгий процесс
@support - я верю в BAS - и то что пишу, трачу свое время - пытаюсь сделать его лучше - и я не пишу претензии, если так могло показаться - это предложения - ведь мы ведем двухстороннюю беседу - и BAS вы выложили не готовым, и продолжаете совершенствовать. И не нужно относится ко мне как к зануде - вы можете не отвечать на то что я пишу - и Вы должны согласится что не все просто как хотелось бы, как и я соглашаюсь с тем, что вы делаете очень сложную работу. Просто не забывайте, что на другой стороне ваших знаний - есть простые пользователи.
Ниже прикреплен архив - это результат более месяца работы - начинал все легко в один поток, потом пошли трудности - потом пропало желание делать - опять взялся - надоело возиться на одном месте - решил все же доделать - короче капец - страдание а не создание - так вот в архиве 3 скрипта отдельных - потому что реализовать через то же свитч - на входе сложновато как то - первый скрипт по заданной ключевой фразе находит группы донноры в одноклассниках - однопоточный. 2-ой парсит последних активных пользователей в группе - сделан с вашей помощью - работает в многопотоке - каждый раз выполняя скрипт полностью с ненужными повторениями - такими как переход на страницу профиля... и 3й - сделан используя данные вами примеры во втором = работает в многопотоке - тестировался с 3х аккаунтов - работает примерно в 10 раз медленее чем руками с одного ака! - опять же потому что при каждом новом потоке нужно выполнять одни и те же действия - такие как запрет загрузки изображений, проверку авторизации, переход в группу в которую будем приглашать - вот вам ответ почему не использую ресурсы.
Как это видел я -когда делал тех задание 3его скрипта -
1)на входе имеем список с аками для авторизации с них будем приглашать - каждый ак - это новый поток- имеем список профилей пользователей с тематических групп - которых будем приглашать
- имеем группу - в которую будем приглашать ее ID
Итак начало работы скрипта - КАК ХОТЕЛОСЬ БЫ!!!
- Настраиваем работу браузера для всех потоков - запрещаем показ картинок для ускорения процесса работы скрипта
- Авторизуемся каждым аком - проверяем авторизацию
- Переходим каждым аком на страницу группы в которую будем приглашать - это для того чтобы позже при вызове окна с группами - наша стояла первой!
ВЫШЕОПИСАННОЕ - ЭТО ТО ЧТО НУЖНО СДЕЛАТЬ ОДИН РАЗ ДЛЯ ВСЕХ ПОТОКОВ - НАСТРОЙКА БРАУЗЕРА БЕЗ СКИДЫВАНИЯ ИНСТАНСА - ЭТО ИДЕАЛЬНО!!!
Если бы мне нужно было перезагрузить браузер - я бы использовал действие сброс - но мне не нужно каждый раз чтобы вы несколько секунд тратилось на один и те же действия!!!ВСЕ!!! Дальше идет только цикл - который общий для всех потоков - то есть все потоки берут строку с профилем с одного и того же ресурса с удалением - переходят на страницу профиля пользователя - проверяют приниает ли он приглашения в группы - и если да - проверяем в группе он или нет - если нет - то приглашаем.
Согласитесь - это очень простой - это супер мега фонарный алгоритм - который я тупая обезьяна делал целый месяц.
Посмотрите на досуге
0_1478736294193_123OK.rarИ речь не идет о том, что бы вы в очередной раз показали как правильно использовать имеющиеся действия - а просто, чтобы проанализировали, что мне не хватило!!! и как сделать BAS лучше. И заметьте без обид - если бы я хотел помучиться - я бы юзаал то же хьюман...
-
Увы это не так! - и если оно так, то оно реализовано так, что как-то не так - без обид.
Могу с вами поспорить. Это действительно так просто. И в том проекте, что я вам сделал так и происходит.
А для чего они очищаются - если бы нужно было действие для очистки - его можно вызывать тогда когда оно нужно - а вот функция для настройки вначале работы скрипта с тем алгоритмом что я описал - была бы просто незаменима!
Просто выполняйте действия по настройке браузера в начале работы потока, а не в OnApplicationStart.
Если нужно сделать что-то 1 раз в начале работы скрипта - выполните это в OnAplicationStart и поместите результаты в глобальную переменную или ресурс, а потом читайте от туда в основном потоке. Пример тоже был.Потому что это не совсем понятный, долгий процесс
Что именно не понятно? Что может быть проще, чем поставить {{users}} в коде?
я верю в BAS - и то что пишу, трачу свое время - пытаюсь сделать его лучше - и я не пишу претензии, если так могло показаться - это предложения - ведь мы ведем двухстороннюю беседу - и BAS вы выложили не готовым, и продолжаете совершенствовать. И не нужно относится ко мне как к зануде - вы можете не отвечать на то что я пишу - и Вы должны согласится что не все просто как хотелось бы, как и я соглашаюсь с тем, что вы делаете очень сложную работу. Просто не забывайте, что на другой стороне ваших знаний - есть простые пользователи.
Опять же не соглашусь с вами, все очень просто.
Конкретных предложений от вас в этом сообщении кроме как поменять принцип работы OnApplicationStart я не вижу.Посмотрите на досуге
0_1478736294193_123OK.rarПосмотрел. У меня ваш скрипт работает, вот результат.
Возможно дело в том что вы вписали 1 акк и указали количество одновременных использований в 1 для пользователей?