@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Подключение сторонней js библиотеки в БАС
-
Можно ли в бас подключить js библиотеку , например вот эту http://chancejs.com/ ? если только в виде модуля, то как в модуле прописать путь до файла chance.js
-
@santilo Самый простой способ - взять код библиотеки и закинуть его в действие выполнить код.
Если хотите использовать модуль, то код библиотеки нужно поместить в файл engine.js
Касательно chancejs.com, она проверяет среду на наличие объектов window и window.document, поэтому перед подключением нужно создать эти переменные так:window = this window.document = new Object()Я подготовил модуль ChanceJs.zip , после его подключения можно использовать все примеры, что есть на сайте.
Например, выполнить код с таким параметром
log(chance.string())выведет случайную строку.
-
@support said in Подключение сторонней js библиотеки в БАС:
Например, выполнить код с таким параметром
Спасибо вам большое, подключил эту библиотеку, все работает как часы) , это получается что можно любую js библиотек таким способом подключать, вообще огонь). Еще один вопросик вам, количество подключенных таким образом библиотек не скажется на производительность БАСА?
-
Блин( щас пробовал подключить https://lodash.com/ сделал по вашему примеру, создал папку LodashJs в папке с модулями, закинул туда 2 файла engine.js, manifest.json в engine.js вставил код библиотеки , после пытался вызвать функцию .range() выдает ошибку " ReferenceError: Can't find variable: _ Номер строки:2 Во время выполнения скрипта { log(.range(0, 20, 5)) section_start("test", 8497,function(){ })}", после пробовал дописать в начале файла эти строчки window = this
window.document = new Object(), та же ошибка. Вы можете подсказать как правильно подключить эту библиотеку, если это возможно -
@santilo said in Подключение сторонней js библиотеки в БАС:
это получается что можно любую js библиотек таким способом подключать, вообще огонь)
Пока только таким кустарным способом. Будет отдельная утилита, которая превращает модуль для ноды, который поддается browserify в модуль для БАС.
Еще один вопросик вам, количество подключенных таким образом библиотек не скажется на производительность БАСА?
Конечно влияет, нужно выполнять дополнительный код в каждом потоке.
Блин( щас пробовал подключить https://lodash.com/ сделал по вашему примеру, создал папку LodashJs в папке с модулями, закинул туда 2 файла engine.js, manifest.json в engine.js вставил код библиотеки , после пытался вызвать функцию .range() выдает ошибку " ReferenceError: Can't find variable: _ Номер строки:2 Во время выполнения скрипта { log(.range(0, 20, 5)) section_start("test", 8497,function(){ })}", после пробовал дописать в начале файла эти строчки window = this
window.document = new Object(), та же ошибка. Вы можете подсказать как правильно подключить эту библиотеку, если это возможноВ коде lodash есть строки
/* * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g; * var compiled = _.template('hello {{ user }}!'); */Которые содержат {{ }}, БАС понимает их как ресурсы. Их можно просто удалить(это часть комментария) и все заработает.
Вот готовый модуль.
Утилиту, которая автоматически создает модули постараюсь сделать быстрее.
-
@support said in Подключение сторонней js библиотеки в БАС:
@santilo said in Подключение сторонней js библиотеки в БАС:
это получается что можно любую js библиотек таким способом подключать, вообще огонь)
Пока только таким кустарным способом. Будет отдельная утилита, которая превращает модуль для ноды, который поддается browserify в модуль для БАС.
Еще один вопросик вам, количество подключенных таким образом библиотек не скажется на производительность БАСА?
Конечно влияет, нужно выполнять дополнительный код в каждом потоке.
Блин( щас пробовал подключить https://lodash.com/ сделал по вашему примеру, создал папку LodashJs в папке с модулями, закинул туда 2 файла engine.js, manifest.json в engine.js вставил код библиотеки , после пытался вызвать функцию .range() выдает ошибку " ReferenceError: Can't find variable: _ Номер строки:2 Во время выполнения скрипта { log(.range(0, 20, 5)) section_start("test", 8497,function(){ })}", после пробовал дописать в начале файла эти строчки window = this
window.document = new Object(), та же ошибка. Вы можете подсказать как правильно подключить эту библиотеку, если это возможноВ коде lodash есть строки
/* * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g; * var compiled = _.template('hello {{ user }}!'); */Которые содержат {{ }}, БАС понимает их как ресурсы. Их можно просто удалить(это часть комментария) и все заработает.
Вот готовый модуль.
Утилиту, которая автоматически создает модули постараюсь сделать быстрее.
Спасибо вам за сборку готового модуля. Отдельная утилита для создания модулей это круто ,упростило бы внедрение сторонних модулей в бас из готовых js библиотек, а их очень много, на все случая жизни), а то щас не очень комфортно их внедрять, но работать можно) если создание подобной утилиты не отнимет у вас много сил и времени, то делать нужно обязательно.