@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Помогите правильно перенести в код.
-
Решил попробовать в код перенести несколько действий, получилось, что цикл не дожидается выполнения каждого действия, а сразу за секунду выводит все log(i), а затем в фоне продолжает выполняться. Как это можно исправить?
for (var i = 0; i < [[TEST_WORDS]].length; i++) { log(i); // Ввод текста _SELECTOR = "\u003eXPATH\u003e //input[@placeholder=\u0027Search\u0027]"; wait_element_visible(_SELECTOR)! get_element_selector(_SELECTOR, false).random_point()! _if(_result().length > 0, function(){ move( {} )! get_element_selector(_SELECTOR, false).clarify(X,Y)! _call(_clarify, {} )! mouse(X,Y)! page().type(VAR_TEST_WORDS[i],100)! })! // Начать цикл _SELECTOR = "\u003eXPATH\u003e //*[contains(@href, \u0022/explore/tags/\u0022)]//span[contains(.,\u0027posts\u0027)]/span"; wait_element(_SELECTOR)! get_element_selector(_SELECTOR, true).length()! ELEMENT_LENGTH = _result() _do(function(){ VAR_CYCLE_INDEX = _iterator() - 1 if(VAR_CYCLE_INDEX >= ELEMENT_LENGTH)_break(); // Получить текст _SELECTOR = "\u003eXPATH\u003e //*[contains(@href, \u0022/explore/tags/\u0022)]//span[contains(.,\u0027posts\u0027)]/span\u003eAT\u003e" + VAR_CYCLE_INDEX; wait_element(_SELECTOR)! get_element_selector(_SELECTOR, false).text()! VAR_SAVED_POSTS = _result() // Получить текст _SELECTOR = "\u003eXPATH\u003e //*[contains(@href, \u0022/explore/tags/\u0022)]//span[contains(.,\u0027#\u0027)]\u003eAT\u003e" + VAR_CYCLE_INDEX; wait_element(_SELECTOR)! get_element_selector(_SELECTOR, false).text()! VAR_SAVED_TEXT = _result() // Записать в массив var temp = VAR_SAVED_POSTS.replace(/,/g, "") * 1; [[FIN_LIST]][0].push(VAR_SAVED_TEXT); [[FIN_LIST]][1].push(temp); })! // Очистить поле _SELECTOR = "\u003eXPATH\u003e //input[@placeholder=\u0027Search\u0027]"; wait_element_visible(_SELECTOR)! get_element_selector(_SELECTOR, false).random_point()! _if(_result().length > 0, function(){ move( {} )! get_element_selector(_SELECTOR, false).clarify(X,Y)! _call(_clarify, {} )! mouse(X,Y)! page().type("<CONTROL>a<BACK>", 30)! })! }