@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
странный глюк с модулем в запуске
-
Создал свой модуль.
В нем набор действий - получение фингера и фильтры.
В этом же проекте запускаю этот модуль в режиме запуска - все четко отрабатывает.Создаю другой проект, и использую этот модуль:
- первое в режиме записи прекрасно отрабатывает.
- в запуске ни в какую не хочет ошибка типо:
Произошла ошибка : ReferenceError: Can't find variable: JPath
При этом я такой переменную не использую. И это на действии парсинга фингера на волидность. Json из фингера по полю volid - d записи отрабатывает прекрасно.
Что за чехорда ? то работаю то нет, в этом работаю в другом не хочу, в записи работаю а в запуске нет ... Как найти причину ?
Версия БАСА последняя - 26.0.2
-
@DuckDuck said in странный глюк с модулем в запуске:
в записи работаю а в запуске нет
В режиме записи переменные становятся глобальными, а в режиме запуска - нет. Может быть отсюда ноги растут. Вообще, похоже на кривую реализацию парсинга JSON.
P.S.
в репозитории BAS какая-то движуха, связанная как раз с JSON модулем. -
@DuckDuck, @GhostZ said in Поток завершился с сообщением "ReferenceError: Can't find variable: JPath":
Модуль не устанавливается т.к BAS считает что он не используется, потому что действия модуля не используются, а используются только функции. Используете любое действие JSON модуля в скрипте и проблем быть не должно.
Решение тут
-
@DuckDuck, @GhostZ said in Лайфхаки BAS:
Так как на данный момент в модулях BAS не работают зависимости
-
@GhostZ said in странный глюк с модулем в запуске:
Так как на данный момент в модулях BAS не работают зависимости, то я придумал способ использовать модули (которые устанавливаются только при использовании, строка, путь и т.д) в других модулях, без необходимости использовать дополнительные действия.
Нужно добавить /Dat:eyJzIjoiaXNfc3RyaW5nIn0=/ в code.js файлы действий, eyJzIjoiaXNfc3RyaW5nIn0= - это закодированная в base64 строка {"s":"is_string"}, is_string - это имя любого действия нужного модуля (можно найти в manifest.json файле модуля).
Этот код нужно добавлять только в те действия которые зависят от других модулей.
Пример модуля использующего действие модуля "Строка": TestModule.zip
Тестовый проект: depends.xmlЧто то я не совсем понял
is_string - это имя любого действия нужного модуля (можно найти в manifest.json файле модуля).
Скачал твой пример модуля - и в файле манифест нету такого имени is_string.
При этом строку раскодировал и у тебя там именно is_string - это ты откуда берешь ? -
@GhostZ
так, чето я совсем запутался.
Пошел я в модуль JSON. Открыл манифест, нашел имя действия

Так ?закодировал

сформировал строку:
/*Dat:IHsicyI6Impzb25fcGFyc2VfdmFsdWVfY29kZSJ9*/и вставил в файлы первой строкой которые заканчивают на code.js
у меня три файла, три функции, во всех этот модуль используется.Но ничего не сработало, - где ошибся ?
И еще вопрос, а если две зависимости + модуль loger
то как два добавить ?PS:
это имя тоже попробовал не хочет он работать

