многопоточность в проекте



  • @support said in многопоточность в проекте:

    Я просто сказал почему ваш проект не работает. Если не хотите, можете не использовать мой совет.

    Я очень хочу использовать Ваши советы и так же хочу понять как несвязанное действие может так отражаться - между ними 4 действия - я хочу понять - так как использую эти действия регулярно... - я начал цикл потом действие загрузить - где выставленна опция - ждать полной загрузки, а ожидание элемента .x-ph__link_last - относится к предыдущему действию - или не так?

    @support said in многопоточность в проекте:

    Зачем вам OnApplicationStart в этом скрипте?

    разъясните и такой момент - я на входе хочу почистить файл куда будут результаты писаться - если я ето действие вынесу из OnApplicationStart - то это действие будет выполнять каждый поток - а так как один закончиться раньше чем другой - то данные записанные отработыанным потоком могут быть стерты тем что в работе???
    0_1476758478100_2016-10-18_133834.png


  • administrators

    @Turutur Скорее БАС рапортует о загрузке страницы после входа в ок и это воспринимается как загрузка страницы https://ok.ru/[[FIRST_LIST_ELEMENT]]/members, дальше БАС переходит к действию прокрутки и во время него происходит смена страницы. После прокрутки БАС ждет что страница прокручена, но так как страница только была создана, этого не происходит.


  • administrators

    @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 суть скрипта в сборе последних вступивших участников в группы ок по целевым запросам


  • administrators

    @Turutur

    суть скрипта в сборе последних вступивших участников в группы ок по целевым запросам

    Так а что не получается?

    1)Парсим прокси в онапликейшнстарт

    Можете создать ресурс, записать туда прокси, а потом использовать его как обычный ресурс в потоках



  • @support а не получается запускать несколько потоков - вернее получается - только все потоки обрабатывают одинаковые данные и прокси здесь ни причем - планирую использовать всего несколько аккаунтов для ускорения процесс - проверка на 3 аках - все норм со стороны ОК РУ - только BAS берет одинаковые данные с файла - соответтвенно скорость выполнения не увеличивается(


  • administrators

    @Turutur

    только BAS берет одинаковые данные с файла

    Хотелось бы увидеть настройки ресурса с файлом, а в идеале весь проект.



  • @support - в Ваше отсутствие - я не бросал попыток сделать многопоток самостоятельно - и несколько раз видоизменял проект - добавляя действия в онапликатионстарт, которые необходимо выполнить единожды - такие как список в файл и тому подобное - но перевести их в глобальную переменнцую не удалось( - как впрочем и сделать многопоток - сейчас проект выстроен линейно под один поток - @support пожалуйста покажите на примере моего проекта как его сделать многопоточным - по всем правилам, чтобы небыло пересечений действий в потоках и использования одинаковых ресурсов
    0_1477832211837_parse_members_ok.rar


  • administrators

    @Turutur

    @support пожалуйста покажите на примере моего проекта как его сделать многопоточным - по всем правилам, чтобы небыло пересечений действий в потоках и использования одинаковых ресурсов

    Вот. 0_1477845287267_2_PARSE_MEMBERS_DONOR_GROUP_OK.xml



  • @support спасибо - я даже не подозревал, что нужно так делать - пока изучал пример - у меня чуть питание в голове не отключилось). Огромным недостатком BAS, впрочем как и его колоссальным преимуществом является большое количество комбинаций действий - логически не всегда придешь к нужному решению - иногда это возможно только методом перебора всех возможных вариаций(



  • Возможно проблема уже решена, может даже данный пример уже был описан, но я его просмотрел. Выложу может кому-нибудь будет полезен. Создаем файл указываем его расположение. В онеапликейшен парсим туда ссылки и от туда уже в многопотоке обрабоатываем
    0_1477902472311_парс авито.xml


  • administrators

    @Стас Да, хороший пример, приблизительно так и работает.


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.