@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Вызов определенной функции
-
На странице сайта может быть один из ~100 элементов (перечень возможных вариантов). В зависимости от того, какой именно элемент присутствует, то нужно запустить соответствующую функцию.
Пытался решить задачу следующим способом:- Описать ~100 функций
- Получить элемент на странице, записать ее в переменную
- Дальше непонятно, как вызвать определенную функцию. В BAS невозможно установить в качестве названия запускаемой функции переменную.
3.1) Был вариант со сверкой элемента с названиями всех функций (структура в коде), но не подошло по причине долгой работы скрипта
if [[Переменная]] == "Функция 1" Вызов функции "Функция 1" else if [[Переменная]] == "Функция 2" Вызов функции "Функция 2" else if [[Переменная]] == "Функция 3" Вызов функции "Функция 3" else и т.д.В итоге задача на данный момент следующая:
Есть переменная, которая может иметь 100 различных значений (пусть это будут "function1", "function2", "function3" и т.д).
Как в зависимости от применяемого значения переменной запустить функцию "function1", "function2", "function3" и т.д.?PS Попытка прописать вызов функции с подстановкой переменной в "Выполнить код" не привела к успеху
-
@GameBot said in Вызов определенной функции:
На странице сайта может быть один из ~100 элементов (перечень возможных вариантов). В зависимости от того, какой именно элемент присутствует, то нужно запустить соответствующую функцию.
Пытался решить задачу следующим способом:- Описать ~100 функций
- Получить элемент на странице, записать ее в переменную
- Дальше непонятно, как вызвать определенную функцию. В BAS невозможно установить в качестве названия запускаемой функции переменную.
3.1) Был вариант со сверкой элемента с названиями всех функций (структура в коде), но не подошло по причине долгой работы скрипта
if [[Переменная]] == "Функция 1" Вызов функции "Функция 1" else if [[Переменная]] == "Функция 2" Вызов функции "Функция 2" else if [[Переменная]] == "Функция 3" Вызов функции "Функция 3" else и т.д.В итоге задача на данный момент следующая:
Есть переменная, которая может иметь 100 различных значений (пусть это будут "function1", "function2", "function3" и т.д).
Как в зависимости от применяемого значения переменной запустить функцию "function1", "function2", "function3" и т.д.?PS Попытка прописать вызов функции с подстановкой переменной в "Выполнить код" не привела к успеху
Условия должны сработать мгновенно, даже если их сотня, почему это решение не подошло?
https://community.bablosoft.com/topic/8847/вызов-функции-из-ресурса-или-переменной
-
@Fox said in Вызов определенной функции:
Условия должны сработать мгновенно, даже если их сотня, почему это решение не подошло?
https://community.bablosoft.com/topic/8847/вызов-функции-из-ресурса-или-переменнойСкрипт проверял элемент, вызывал определенную функцию (которая также содержала несколько проверок условий if) и если условие в функции не выполнялось, то переходили к следующему элементу и опять проверка по 100 функциям и вложенным условиям. Всего проверка по 5 таким элементам.
Выполнение цикла в режиме запуска занимало более 30 секунд. Предварительно перед данными проверками скрипт еще получает 6 значений через "Получить текст" и переводит их в числовые переменные, но это точно не должно занимать много времени.PS Скрипт был стерт при компиляции (похоже из-за неверно выставленных галочек), поэтому проверить правки не получится (Ошибка "script not found" вроде). Придется заново все записать и хотелось бы предварительно выяснить как лучше реализовать
-
@GameBot said in Вызов определенной функции:
Скрипт проверял элемент, вызывал определенную функцию (которая также содержала несколько проверок условий if) и если условие в функции не выполнялось, то переходили к следующему элементу и опять проверка по 100 функциям и вложенным условиям. Всего проверка по 5 таким элементам.
Выполнение цикла в режиме запуска занимало более 30 секунд. Предварительно перед данными проверками скрипт еще получает 6 значений через "Получить текст" и переводит их в числовые переменные, но это точно не должно занимать много времени.Проще сразу получить все необходимые данные со страницы для всех вариантов функций. Например один раз получить код страницы и уже потом его парсить. В таком случае скрипт обратится к странице один раз, а остальные действия будут выполнятся мгновенно.
PS Скрипт был стерт при компиляции (похоже из-за неверно выставленных галочек), поэтому проверить правки не получится (Ошибка "script not found" вроде).
Чегось? Как может скрипт быть стёрт из за "неверно выставленных галочек" ?