@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Ресурс в список (но чтобы список был - глобальной переменной)
-
Подскажите как сделать ресурс в список(глобальный). Можно ли как-то указать, что это должна быть глобальная переменная. Сейчас я это делаю так - ресурс в список(простая переменная). Потом устанавливаю глобальную переменную и туда заганяю список с ресурса. Как бы - лишние действия. Если список большой, то и времени это занимает больше.
-
@seedgg Ресурс итак глобальный, зачем переводить его в список и устанавливать в глобальную переменную?
Как бы - лишние действия
Два экшена?

Можно через выполнить код:
VAR_RESOURCE_AS_LIST = RPick("test") //test - имя ресурса var val = JSON.stringify(VAR_RESOURCE_AS_LIST); PSet("basglobal", "GLOBALTEST", val) //GLOBALTEST - имя глобальной переменнойНу или вообще одной строчкой в выполнить код:
PSet("basglobal", "GLOBALTEST", (JSON.stringify(RPick("test")))) -
У меня ругается что нету такой переменной, а в случае если указываю через GLOBAL: матерится что не знает, как это читать.
-
@Bigma said in Ресурс в список (но чтобы список был - глобальной переменной):
@Fox А можно тупой вопрос, а как к этому глобальному списку обращаться в проекте. Просто указывать по имени ?
Просто у меня ругается, что нет такой.а зачем вам это? Предупреждаю сразу, под капот лучше нелезть
-
@Bigma said in Ресурс в список (но чтобы список был - глобальной переменной):
@Fox Ну хотел не плодить списки в потоках одинаковые.
Хотел из списка привязать по: номер потока - номер строки.Используйте номер потока через действие "Номер потока", а номер строки списка можете получить через действие "Получить Элемент"
Но я так понимаю к глобальному списку обраться нельзя. Опять фича.
Так себе уловка
-
@Fox в том то и дело что немугу обратиться к глобальному списку в действии получить элемент. Ошибку выдает. Я же тестовый скрипт приложил выше в сообщении.
-
@Bigma said in Ресурс в список (но чтобы список был - глобальной переменной):
обратиться к глобальному списку в действии получить элемент. Ошибку выдает.
Получить элемент из глобального списка можно через действие Установить переменную:
([[GLOBAL:LIST]])[ 0 ] || null
либо же через действие Выполнить код (да простит меня @Fox):[[LIST_ELEMENT]] = [[GLOBAL:LIST]][0]Хотел из списка привязать по: номер потока - номер строки.
Действие Выполнить код:
var index = [[THREAD_INDEX]] - 1 log([[GLOBAL:LIST]][index])
-
-
This post is deleted!
