@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Экранирование символов в jpath
-
Помогите разобраться. Пытаюсь распарсить json
{"sheets":[{"name":"Sheet1","data":[["CMA07-W(870-1500)","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,511010000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""],["CMA07-W(870-1500)","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,710000000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""]]}]}в котором находится CMA07-W(870-1500), следующим образом
.sheets[0].data[?(@[0] == 'CMA07\-W\(870\-1500\)')]Символы вроде экранирую, но все равно выдает синтаксическую ошибку. Направьте пожалуйста в каком направлении копать.
-
@John_Bradley said in Экранирование символов в jpath:
.sheets[0].data[?(@[0] == 'CMA07-W(870-1500)')]
Разобрался, если поставить двойные кавычки, то работает. Чудеса.
-
Теперь новый головняк, если надо найти значение KR0601437U00 Bosch GLI 10,8 V-LI, экранирую символы
.sheets[0].data[?(@[0] == "KR0601437U00\ Bosch\ GLI\ 10\,8\ V\-LI")]Паршу JSON
{"sheets":[{"name":"Sheet1","data":[["KR0601437U00 Bosch GLI 10,8 V-LI","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,511010000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""],["CMA07-W(870-1500)","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,710000000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""]]}]}Если убрать запятую в "10,8" то находит. Где ошибка?
-
@John_Bradley I dont really understand what you want to parse in that json? Posted the result you want and ill try to parse it for you.
-
Finds
{"sheets":[{"name":"Sheet1","data":[["KR0601437U00 Bosch GLI 108 V-LI","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,511010000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""],["CMA07-W(870-1500)","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,710000000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""]]}]}.sheets[0].data[?(@[0] == "KR0601437U00\ Bosch\ GLI\ 108\ V\-LI")]***************************************************************************.
Does not find
{"sheets":[{"name":"Sheet1","data":[["KR0601437U00 Bosch GLI 10,8 V-LI","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,511010000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""],["CMA07-W(870-1500)","Крепление для проектора настенное, штанга 870-1500 мм. Выдерживает до 15 кг, цвет белый, алюминий+металл. Возможность скрытой прокладки кабелей. Производено в Китае","",39988,710000000,"yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes","","yes",""]]}]}.sheets[0].data[?(@[0] == "KR0601437U00\ Bosch\ GLI\ 10\,8\ V\-LI")]Как экранировать запятую в этом случае?
-
@JinMVP said in Экранирование символов в jpath:
If thats the case try the above
No. I need to get all values by SKU (KR0601437U00 Bosch GLI 10,8 V-LI), not just the first one.
-
@John_Bradley You must post the full json for me to parse, cant really understand what you mean by that. You can just use get all values.
-
@JinMVP said in Экранирование символов в jpath:
@John_Bradley You must post the full json for me to parse, cant really understand what you mean by that. You can just use get all values.
Мне не надо получать все значения и не надо получать только первое. Надо распарсить json по артикулу. Проблема в экранировании запятой в артикуле. Ладно, забей. Не понимаешь ты меня. Может кто другой подскажет.
-
В общем нашел решение, если кому-то пригодится:
- распарсить JSON в двумерный массив
.sheets[0].data[*]- отфильтровать двумерный массив по значению
[[RESULT]] = [[PARSED_JSON_VALUES]].filter(function (e) { return (e)[0] == 'KR0601437U00 Bosch GLI 10,8 V-LI'})

