многопоточность в проекте
-
@Turutur сделай в онаплстарт ресур в список, но создай для этого глобальную переменную, а уже в самом скрипте сделай что бы каждый поток после использования удалл строку из списка, и на всякий случай сделай запуск потоков через определенное время, друг за другом, тут была тема о том как это сделать. Тогда у тебя потоки не будут брать одинаковую строку
-
@DrPrime said in многопоточность в проекте:
сделай в онаплстарт ресур в список, но создай для этого глобальную переменную
спасибо - хорошая подсказка = попробовал в онапликатион сделать следующее - читаю файл в список - локальная переменная - создаю глобальную - значением указываю локальную на выходе лог
[14:05:15] Поток №1 : ReferenceError: Can't find variable: VAR_SCAN_RESULT_LIST_LOC Номер строки:2 Во время выполнения скрипта { var val = JSON.stringify(VAR_SCAN_RESULT_LIST_LOC); PSet("basglobal", "SCAN_RESULT_LIST", val) section_end(function(){ })}
-
Обновил скрипт - ошибка пропала - но глобальная переменная не приняла заданные значения - значит не вариант
-
@DrPrime said in многопоточность в проекте:
и на всякий случай сделай запуск потоков через определенное время, друг за другом, тут была тема о том как это сделать. Тогда у тебя потоки не будут брать одинаковую строку
нашел эту тему - там чтобы такое проделать - нужно иметь мозг как у админа) - хотелось бы чтобы BAS сам четко отрабатывал и не брал одинаковые строки при тех условиях что стоит удалять строку после взятия...
-
@Turutur попробовал сделать сам - вроде норм, но иногда попадается так что идут 2 одинаковых значения под ряд.
Слушай, а какая вообще суть скрипта? просто через использование ресурса никак не сделать этого?
-
Столкнулся с аналогичной проблемой,
суть в следующем:
1)Парсим прокси в онапликейшнстарт
2)создаем глобальную переменную
3)грузим в нее список ключей
4)парсим выдачу гугла при условии что на каждый поток отдельный проксиПри однопоточном варианте все прекрасно работает, если же многопоток то выдает ошибку что не может получить переменную с ключами. Пробовал и глобальную назначать в онапликейшнстарт и файл в список а после список в глобальную переменную и брать элемент из списка с удалением, вообще никак не хочет пахать
-
@DrPrime суть скрипта в сборе последних вступивших участников в группы ок по целевым запросам
-
суть скрипта в сборе последних вступивших участников в группы ок по целевым запросам
Так а что не получается?
1)Парсим прокси в онапликейшнстарт
Можете создать ресурс, записать туда прокси, а потом использовать его как обычный ресурс в потоках
-
@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 - пригласили и тд., то есть при новом успехе чтобы поток не переходил каждый раз в группу куда будем приглашать?
Ну так так и делайте, тут не вижу надобности для костылей, какие проблемы с этим скриптом?