@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Нумерация Действий в BAS (Section_Start)
-
Если я хочу нагенерить 150 вот таких блоков и не хочу вставлять их в BAS вручную, я могу добавить их в Notepad++
Вопрос - по какому принципу генерятся порядковые номера действий?
Это случайное число? И мне надо следить только за тем, что бы он в скрипте больше нигде не повторилось?section_start("", 356865931)! /*Dat:ey...*/ VAR_F140 = "" section_end()! -
@AngelOfAncient Если у вас такая странная потребность, то вы явно что-то делаете не так... Используйте цикл, если надо что-то много раз повторить
-
This post is deleted!
-
@DoctorKrolic Вы не можете в цикле задать имя переменной.
"Имя переменной" в "Установить переменную" не сможет взять имя (!), а не значение переменной из [[CYCLE_INDEX]]. -
@AngelOfAncient Списки в помощь. Если и они "не подходят", то вы явно строите Костыльград
-
@AngelOfAncient said in Нумерация Действий в BAS (Section_Start):
@DoctorKrolic Вы не можете в цикле задать имя переменной.
"Имя переменной" в "Установить переменную" не сможет взять имя (!), а не значение переменной из [[CYCLE_INDEX]].https://community.bablosoft.com/topic/3975/вызвать-переменную-через-cycle-index/6
Но я согласен с @DoctorKrolic - используйте массивы или ассоциативные массивы
-
@DoctorKrolic Опишу задачу - может быть, Вы скажете, где не прав.
У меня есть список из 350 всевозможных характеристик продукции Интернет-магазина.
Что бы не тратить кучу времени на транслит и задание переменных, я задаю их как F1~F350.Потом через JS задаю им значение в цикле:

А потом вставляю в базу данных запись, где в том же порядке указаны 350 полей, с F1 по F350.
Так как БД организована в том же порядке, что и этот список, то значения полей попадают в нужные столбцы. -
@AngelOfAncient said in Нумерация Действий в BAS (Section_Start):
@DoctorKrolic Опишу задачу - может быть, Вы скажете, где не прав.
У меня есть список из 350 всевозможных характеристик продукции Интернет-магазина.
Что бы не тратить кучу времени на транслит и задание переменных, я задаю их как F1~F350.Потом через JS задаю им значение в цикле:
А потом вставляю в базу данных запись, где в том же порядке указаны 350 полей, с F1 по F350.
Так как БД организована в том же порядке, что и этот список, то значения полей попадают в нужные столбцы.Вы описали не задачу, а ваше решение задачи. У вас в базе данных 350 колонок?

@AngelOfAncient said in Нумерация Действий в BAS (Section_Start):
@Fox А изначальный вопрос по нумерации действий - он не имеет смысла? Или всё таки есть какая-то логика, которой можно руководствоваться в нумерации секций, если добавлять части скрипта через текстовый редактор?
Не имеет смысла, id формируются рандомные, главное что бы не было повторений. Но я всё равно рекомендую не лезть под капот
-
@AngelOfAncient Если не ошибаюсь, встроенная функция транслита есть в модуле "Строка" в версиях БАС 24+. В данном случае вам наиболее целесообразно использовать обычные js объекты. А то мало того, что если просто залезть посмотреть вашу БД, то там ничего не понятно от слова совсем, так ещё и если новое свойство добавится, то это может всё сломать
-
@DoctorKrolic said in Нумерация Действий в BAS (Section_Start):
@AngelOfAncient Если не ошибаюсь, встроенная функция транслита есть в модуле "Строка" в версиях БАС 24+. В данном случае вам наиболее целесообразно использовать обычные js объекты. А то мало того, что если просто залезть посмотреть вашу БД, то там ничего не понятно от слова совсем, так ещё и если новое свойство добавится, то это может всё сломать
А зачем вообще использовать транслит? Имена свойств объекта можно называть и кирилицей, в каком то проекте имена свойств были полностью названы из текущей url браузера
-
@Fox said in Нумерация Действий в BAS (Section_Start):
У вас в базе данных 350 колонок?
Да, 350) Добавил через текстовую версию БД.
Скрафтил в Экселе) Чую в том тоже запах костыля))Задача простая - спарсить Интернет-магазин со всеми характеристиками товаров и залить его потом на другой движок. Первая итерация - собираю все характеристики всех товаров. Потом формирую под это вот такую широкую БД на 300+ колонок. Потом заливаю туда данные описаным выше способом.
-
@AngelOfAncient said in Нумерация Действий в BAS (Section_Start):
@Fox said in Нумерация Действий в BAS (Section_Start):
У вас в базе данных 350 колонок?
Да, 350) Добавил через текстовую версию БД.
Скрафтил в Экселе) Чую в том тоже запах костыля))Задача простая - спарсить Интернет-магазин со всеми характеристиками товаров и залить его потом на другой движок. Первая итерация - собираю все характеристики всех товаров. Потом формирую под это вот такую широкую БД на 300+ колонок. Потом заливаю туда данные описаным выше способом.
А если у какого либо товара есть особенная характеристика, которая не встречается у других товаров? Знаете как бы я решил эту задачу? Я бы парсил товар, данные бы собирал в ассоциативный массив и хранил в базе в виде строки. Перенести такую базу данных на другой движок будет быстрым и простым делом
-
@DoctorKrolic said in Нумерация Действий в BAS (Section_Start):
@Fox Можно, просто я не особо фанат такого, наравне с тем, чтобы называть переменные "POTOKI", "IMYA" и др. Я считаю, что такие вещи портят код
Да, но здесь речь об именах свойств объекта, после транслита можно запросто получить повторяющийся ключ, который в объекте просто заменит содержимое предыдущего ключа.
-
@AngelOfAncient said in Нумерация Действий в BAS (Section_Start):
А потом вставляю в базу данных запись, где в том же порядке указаны 350 полей, с F1 по F350.
Так как БД организована в том же порядке, что и этот список, то значения полей попадают в нужные столбцы.При нарушении порядка или появления новой характеристики у товара, записи будут попадать не в свои ячейки и будет путаница. Можно использовать json строки, наполнять json строку можно так же в JS если удобно. Потом данные, сохраненные в формате json строк можно легко распарсить в любой удобный формат