@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Хаотичное использование строк в ресурсе во второй раз
-
@fullws said in Хаотичное использование строк в ресурсе во второй раз:
Добрый день! Подскажите, пожалуйста, почему BAS когда использует ресурс в первый раз, берет строки по порядку из файла, а во второй раз как-то хаотично? Как сделать так, чтобы он всегда брал строки по порядку?
Уменьшите время между использованиями (1-10 можно поставить), этот параметр отвечает за то, сколько времени должно пройти, прежде чем скрипт сможет снова использовать эту строку. А вообще вам проще было бы прочитать файл в список и работать уже со списком.
-
@Fox я создал такой простой скрипт для наглядности, в моем скрипте между взятием из ресурса проходит около минуты, что подходит под это значение. Попробовал поставить 1, ничего не изменилось, все те же значения. Спасибо за наводку со списком, только вот никак не могу разобраться, как использовать каждое значение по отдельности. Прочитал я файл список, а как потом задать действие, которое будет по очереди брать элемент? Работа с ресурсами более очевидна, со списком я что-то немного застрял.
-
@fullws said in Хаотичное использование строк в ресурсе во второй раз:
@Fox я создал такой простой скрипт для наглядности, в моем скрипте между взятием из ресурса проходит около минуты, что подходит под это значение. Попробовал поставить 1, ничего не изменилось, все те же значения.
Если в тестовом скрипте всё работает правильно, а в вашем основном скрипте работает не правильно, значит вы что то упустили
Спасибо за наводку со списком, только вот никак не могу разобраться, как использовать каждое значение по отдельности. Прочитал я файл список, а как потом задать действие, которое будет по очереди брать элемент? Работа с ресурсами более очевидна, со списком я что-то немного застрял.
Если вы работаете в один поток, то используйте действие "Foreach", в переменной [[FOREACH_DATA]] будет текущий элемент списка
-
@Fox Нет, в тестовом тоже не получается. Тестовый - который чуть выше прикрепил. Время между использованиями - 1. Ресурс перезагружал, точно 1. Но все равно берутся данные также, как я показывал выше.
По поводу Foreach, это так что ли получается? (1 изображение) Но у меня очень большой скрипт с кучей функций и использованием меток. А при переходе по метке Foreach забывает использование строки и начинает использовать ее заново. Вот пробовал сделать тестовый скрипт (2 изображение). В функции Test два действия: Лог [[VAL]] и Перейти к метке Ew. BAS тогда по кругу использует первый элемент.



-
@fullws said in Хаотичное использование строк в ресурсе во второй раз:
@Fox Нет, в тестовом тоже не получается. Тестовый - который чуть выше прикрепил. Время между использованиями - 1. Ресурс перезагружал, точно 1. Но все равно берутся данные также, как я показывал выше.
По поводу Foreach, это так что ли получается? (1 изображение) Но у меня очень большой скрипт с кучей функций и использованием меток. А при переходе по метке Foreach забывает использование строки и начинает использовать ее заново. Вот пробовал сделать тестовый скрипт (2 изображение). В функции Test два действия: Лог [[VAL]] и Перейти к метке Ew. BAS тогда по кругу использует первый элемент.При переходе по меткам нельзя войти в цикл, переходить нужно до цикла. Вы бы описали изначальную задачу, а то гадать тут можно долго, что лучше, а что нет.
-
@Fox Вот, вообщем. Первые функции выполняют логин на сайте, потом проверяют баланс и потом уже переход к функции Item1. В самом начале Item1 берет ссылку из первого файла и загружает страницу, берет число из второго файла и устанавливает для него переменную, с которой я потом работаю. Дальше в функциях заложены стандартные условия/действия/клики. После отработки всей функции Item1 - переход в Main к функции проверки изменения баланса, а затем снова переход к Item1 и так по кругу, пока баланс не изменится. Самое главное вроде описал.


-
@fullws said in Хаотичное использование строк в ресурсе во второй раз:
@Fox Все, что мне нужно, это просто сделать так, чтобы из моего списка брались ссылки и числа по кругу бесконечное количество раз.

-
@fullws said in Хаотичное использование строк в ресурсе во второй раз:
@Fox Но я же показал, что у меня в скрипте много меток и функций и этот вариант у меня не прокатит :(
вызов функции прекрасно будет работать, а вот с метками будут проблемы. Если принципиально нужно работать с метками, то в самом начале читайте файл в список, затем берите первый элемент с удалением из списка и работайте с ним. Как элементы закончатся, прочитайте файл в список снова



