@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Цикл в цикле, сбивается CYCLE_INDEX
-
Подскажите, пожалуйста, прочитал несколько тем но так и не понял.
Есть цикл
for 1 до 20
...
...
в нем цикл
while X>100
...
....
if ([[CYCLE_INDEX]]>9) {} <-- но тут мне нужно цикл_индекс из внешнего циклакак нашаманить чтобы в while была другая переменная, а не CYCLE_INDEX ?
Спасибоps
через if не оч хороший вариант и отправлять на метку. -
@kuzkuz said in Цикл в цикле, сбивается CYCLE_INDEX:
Подскажите, пожалуйста, прочитал несколько тем но так и не понял.
Есть цикл
for 1 до 20
...
...
в нем цикл
while X>100
...
....
if ([[CYCLE_INDEX]]>9) {} <-- но тут мне нужно цикл_индекс из внешнего циклакак нашаманить чтобы в while была другая переменная, а не CYCLE_INDEX ?
Спасибоps
через if не оч хороший вариант и отправлять на метку.https://community.bablosoft.com/topic/3751/не-корректная-работа-при-использовании-цикла-в-цикле/10
Что бы реализовать счётчик итераций самому, просто создайте переменную с цифрой перед циклом и увеличивайте её в цикле
-
Дело в том, что во внутреннем цикле мне нужно получать правильную переменную CYCLE_INDEX из внешнего. Я конечно понимаю, что я могу во внешнем сделать
[[VNESHNAYA_PEREM]] = [[CYCLE_INDEX]] и юзать её во внутреннем, но! мне тогда менять кучу кода )
Поэтому и спросил, нет ли простого варианта, задать для внутреннего цикла, чтобы была любая переменная (счетчиком), но не [[CYCLE_INDEX]] -
@kuzkuz said in Цикл в цикле, сбивается CYCLE_INDEX:
Дело в том, что во внутреннем цикле мне нужно получать правильную переменную CYCLE_INDEX из внешнего. Я конечно понимаю, что я могу во внешнем сделать
[[VNESHNAYA_PEREM]] = [[CYCLE_INDEX]] и юзать её во внутреннем, но! мне тогда менять кучу кода )
Поэтому и спросил, нет ли простого варианта, задать для внутреннего цикла, чтобы была любая переменная (счетчиком), но не [[CYCLE_INDEX]]Установить свой счётчик переменных для внутреннего цикла это самый простой и действенный вариант. Через действие "установить переменную" это будет самым очевидным решением. Если хотите костылить, переименуйте переменные в коде скрипта
-
@Fox
Установить свой счётчик переменных для внутреннего цикла это самый простой
Так я о том, что я не понял, как это сделать.
Как сделать, так, чтобы во внутреннем цикле переменная CYCLE_INDEX вообще не была задействована.
То что Вы дали ссылку, там просто о том, что цикл в цикле с одной и той же переменной - норм справляется. Но у меня то не та история.Т.е. как сделать цикл внутри цикла, так, чтобы из за внутреннего цикла не затиралось значение CYCLE_INDEX внешнего (при использовании её внутри внутреннего). Как я понимаю - никак.
-
@kuzkuz с переменной перед вторым (внутренним) циклом.
Все равно не получить корректную внешнюю CYCLE_INDEX (внутри внутреннего)
тест-цикл-в-цикле.xmlне возможно получить внешний CYCLE_INDEX внутри внутреннего.
Для понимания, внутренних много, и большие, много кода, то о чем я писал - значит только 1 вариант, задать в новую переменную CYCLE_INDEX внешнего и править код во внутренних.
Трабл возник, потому что я сперва сделал циклы, а потом обернул это все в один большой цикл. -
@kuzkuz said in Цикл в цикле, сбивается CYCLE_INDEX:
@Fox
Установить свой счётчик переменных для внутреннего цикла это самый простой
Так я о том, что я не понял, как это сделать.Через действие "установить переменную"
Как сделать, так, чтобы во внутреннем цикле переменная CYCLE_INDEX вообще не была задействована.
Открываете действие "For", берёте его id, находите в скрипте это действие, в коде действия изменяете имя переменной. Учтите, что при сохранении действия в BAS переменная перетрётся и нужно будет опять её менять в коде скрипта.
Все равно не получить корректную внешнюю CYCLE_INDEX (внутри внутреннего)
тест-цикл-в-цикле.xmlДелать за вас я не буду
-
@Fox всё!! Доперло.
В исходном коде шаблона заменить в цикле переменную CYCLE_INDEX на заданную )))
Вы просто нигде не писали, про исходный код. Вот и не впетривал.
А так в исходном коде можно поменять только для одного этого внутреннего цикла (уничтожить там CYCLE_INDEX) -
@kuzkuz said in Цикл в цикле, сбивается CYCLE_INDEX:
Вы просто нигде не писали, про исходный код.
@Fox said in Цикл в цикле, сбивается CYCLE_INDEX:
Если хотите костылить, переименуйте переменные в коде скрипта
-
@GhostZ , есть такой кубик "выполнить код" . И он у меня встречается часто.
Для тех кто не знает (например я), что можно залезть в исходный код и там внести правки, "переименуйте переменные в коде скрипта", можно проассоциировать с этим кубиком. Главное разобрались.
Вообщем все понятно, не залезая в исходный код, через кубики это не поменять.
-
@discovery-84 said in Цикл в цикле, сбивается CYCLE_INDEX:
Установить переменную CYCLE_INDEX в CYCLE_INDEX_1
а после вложеного цикла делаем
CYCLE_INDEX_1 в CYCLE_INDEXОга, я так же делаю. Вроде всем хорошо известный прием? Даже не программистам.