многопоточность в проекте
-
Набросал шаблончик парсер пользователей с заданных групп одноклассников - в один поток работает без сбоев - запускаю в несколько - он не работает - пишет что не найдена перменная - помогите настроить на многопоток и указать что не так - сам не могу осознать - вот архив - в нем шаб и группы для примера
0_1476753934257_parse_members_ok.rarлистая и перебирая действия шаба - возник вопрос - если есть функция OnApplicationStart - почему нет функции для завершения скрипта типа TheEndApplicationFinish @support ) ? - ведь если делаешь многопточный скрипт - есть действия которые нужно выполнить один раз в самом конце скрипта когда все потоки отработали
да кстати @support - вот регулярная ошибка о которой писал в личку - почему то не срабатывает действие ожидания полной загрузки и идет скачек на след действие:
-
он не работает - пишет что не найдена перменная
Локальные переменные установленные в OnApplicationStart не будут работать в остальных потоках. Запрет загрузок картинок так же не будет работать, так как в начале работы потока браузер пересоздается.
Зачем вам OnApplicationStart в этом скрипте?
листая и перебирая действия шаба - возник вопрос - если есть функция OnApplicationStart - почему нет функции для завершения скрипта типа TheEndApplicationFinish
Пока не сделал.
да кстати @support - вот регулярная ошибка о которой писал в личку - почему то не срабатывает действие ожидания полной загрузки и идет скачек на след действие:
Замените ожидание элемента .x-ph__link_last на ожидание полной загрузки страницы и будет работать.
-
@support said in многопоточность в проекте:
Замените ожидание элемента .x-ph__link_last на ожидание полной загрузки страницы и будет работать.
это не связанные действия - это на другом этапе!!! - я же стрелкой обозначил
@support said in многопоточность в проекте:
Зачем вам OnApplicationStart в этом скрипте?
вообще тогда не понимаю логики его использования - я думал что данная функция это как настройка для предстоящих потоков
-
это не связанные действия - это на другом этапе!!! - я же стрелкой обозначил
Я просто сказал почему ваш проект не работает. Если не хотите, можете не использовать мой совет.
вообще тогда не понимаю логики его использования - я думал что данная функция это как настройка для предстоящих потоков
Настройку потоков можно осуществить выполнив действия в начале работы потока. OnApplicationStart выполняется один раз при старте работы приложения, а не потока.
-
@support said in многопоточность в проекте:
Я просто сказал почему ваш проект не работает. Если не хотите, можете не использовать мой совет.
Я очень хочу использовать Ваши советы и так же хочу понять как несвязанное действие может так отражаться - между ними 4 действия - я хочу понять - так как использую эти действия регулярно... - я начал цикл потом действие загрузить - где выставленна опция - ждать полной загрузки, а ожидание элемента .x-ph__link_last - относится к предыдущему действию - или не так?
@support said in многопоточность в проекте:
Зачем вам OnApplicationStart в этом скрипте?
разъясните и такой момент - я на входе хочу почистить файл куда будут результаты писаться - если я ето действие вынесу из OnApplicationStart - то это действие будет выполнять каждый поток - а так как один закончиться раньше чем другой - то данные записанные отработыанным потоком могут быть стерты тем что в работе???
-
@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 пожалуйста покажите на примере моего проекта как его сделать многопоточным - по всем правилам, чтобы небыло пересечений действий в потоках и использования одинаковых ресурсов