@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Операции + и - в конструкторе имеют разную логику (wtf)?
-
Создаю переменную и в значении выбираю конструктор выражений, там создаю такую конструкцию:
a) ((([[VAR1]]).split("0.").join("")) - ([[VAR2]]))
где var1=0.00001000 и var2=300
получаю в результате 700
ОК!б) ((([[VAR1]]).split("0.").join("")) + ([[VAR2]]))
те же значения
получаю 00001000300
WTF!Это баг или фича? Если фича, то зачем и как нормально решить мою задачу?
-
@DrPrime не работает так, пишет SyntaxError.
Понятно, что складывается как строки, а вычитается как числа. Главный вопрос - почему такая разница между + и - ? Это скорее к автору, если это не только у меня так работает.
Но и за решение буду благодарен. -
@DrPrime, не мог понять, что вообще происходит и почему это выражение выдает какой-то странный ответ. Оказалось, что parseInt([[VAR1]]) при var1=00002000 (это после обрезки "0." спереди) превращается в "1". Т.е. в значение по умолчанию, когда переключаешь тип на int.
-
В общем нашел два решения:
Либо через "Выполнить код"
var a1 = [[VAR1]]; var b1 = 0.00000300; // вместо 0.00000300 тоже может быть переменная из Баса var c1 = Number(a1)+Number(b1); [[RESULT]] = Number(c1); // сохраняем сумму в переменную result и дальше в Басе с ней работаемЛибо сложить вычитанием в конструкторе ¯\_ (ツ)_/¯
([[[VAR1]]) - (-0.00000300)Профит.
-
@Antonio said in Операции + и - в конструкторе имеют разную логику (wtf)?:
Главный вопрос - почему такая разница между + и - ? Это скорее к автору, если это не только у меня так работает.
Тут достаточно все достаточно логично,
строка + строка = строка,
строка - строка = числоНо это поведение js, я не имею к этому отношения.
Если интересно, то вот еще много забавного https://gist.github.com/MichalZalecki/c964192f830360ce6361