многопоточность в проекте
-
@Turutur Скорее БАС рапортует о загрузке страницы после входа в ок и это воспринимается как загрузка страницы
https://ok.ru/[[FIRST_LIST_ELEMENT]]/members
, дальше БАС переходит к действию прокрутки и во время него происходит смена страницы. После прокрутки БАС ждет что страница прокручена, но так как страница только была создана, этого не происходит.
-
@Turutur Очитску файла как раз можно размещать в OnApplicationStart
-
@support - спасибо - понял - воспользовался подсказками - на старте в онапликатион оставил получение пути и пустую запись в файл - все остальное вынес в общий поток действий - теперь запуская 3 потока - имею 3 совершенно одинаковых потока - которые парсят данные с одних и тех же групп - то есть просто поток в 3 дубля - а меня интересует скорость - что опять то нетак(((
-
@support said in многопоточность в проекте:
@Turutur Очитску файла как раз можно размещать в OnApplicationStart
а такие действия как "читать файл в список" - если вынести из онапликатионстарт - будут все потоки делать одно и то же?
-
@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 время первого успеха -переходил в страницу профиля , а затем только выполнял поставленную задачу. И второе - как сделать так, чтобы после успешного действия удалялась строка из ресурса???