@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Поиск по определённой части строки в списке/ресурсе
-
Появилась надобность находить строку из списка либо же ресурса зная лишь её часть, к примеру:
mil2 45gjdjj 58828
hjol f7ewhfw9 01421894Надо найти из этих двух строк ту что содержит "58828", конечно можно через foreach и список сделать проверку через модуль "строка", но проблема в том что проверка идёт из 150 тысяч строк, как это можно сделать красиво?Или оптимизировать чтобы бас не вылетал?
Буду очень рад любой помощи!Спасибо!
Вот как я пытался сделать - но это просто крашит бас -
@ynvazius said in Поиск по определённой части строки в списке/ресурсе:
Появилась надобность находить строку из списка либо же ресурса зная лишь её часть, к примеру:
mil2 45gjdjj 58828
hjol f7ewhfw9 01421894Надо найти из этих двух строк ту что содержит "58828", конечно можно через foreach и список сделать проверку через модуль "строка", но проблема в том что проверка идёт из 150 тысяч строк, как это можно сделать красиво?Или оптимизировать чтобы бас не вылетал?
Буду очень рад любой помощи!Спасибо!Вот как я пытался сделать - но это просто крашит бас
В js нет возможности без перебора найти элемент массива по его части. В вашем случае лучше использовать базу данных либо ассоциативные массивы
-
@thepappo said in Поиск по определённой части строки в списке/ресурсе:
@Fox обычный цикл на js должен вроде быстрее работать, чем на кубиках и точно не должен приводить к вылетам.
Любой бесконечный или очень большой цикл без задержки будет приводить к зависанию интерфейса BAS. В зависимости от настройки ОС программа будет либо висеть либо закрываться автоматически.
Здесь скорее всего изначальную задачу можно решить гораздо проще. Например поиск по значению колонке в базе данных отработает в десятки раз быстрее, чем любой перебор данных
-
@Fox said in Поиск по определённой части строки в списке/ресурсе:
Здесь скорее всего изначальную задачу можно решить гораздо проще. Например поиск по значению колонке в базе данных отработает в десятки раз быстрее, чем любой перебор данных
Про БД понятно, что быстрее всего будет - сделать запрос с LIKE. То что при выполнении долгого js бас зависает - если честно, не знал.
-
@thepappo said in Поиск по определённой части строки в списке/ресурсе:
@Fox said in Поиск по определённой части строки в списке/ресурсе:
Здесь скорее всего изначальную задачу можно решить гораздо проще. Например поиск по значению колонке в базе данных отработает в десятки раз быстрее, чем любой перебор данных
Про БД понятно, что быстрее всего будет - сделать запрос с LIKE. То что при выполнении долгого js бас зависает - если честно, не знал.
На самом деле БАС однопоточный, только не говори не кому xD
-
@UserTrue said in Поиск по определённой части строки в списке/ресурсе:
@thepappo said in Поиск по определённой части строки в списке/ресурсе:
@Fox said in Поиск по определённой части строки в списке/ресурсе:
Здесь скорее всего изначальную задачу можно решить гораздо проще. Например поиск по значению колонке в базе данных отработает в десятки раз быстрее, чем любой перебор данных
Про БД понятно, что быстрее всего будет - сделать запрос с LIKE. То что при выполнении долгого js бас зависает - если честно, не знал.
На самом деле БАС однопоточный, только не говори не кому xD
Ты про субпотоки?
-
@Fox Я сильно не вникал, но как я понял его потоки это не реальные потоки внутри процесса. Может ошибаюсь, но даже по ощущениям он работает так же как движок JS, есть цикл событий который легко блокируется синхронным кодом, который долго выполняется.
В БАС например один поток может заблокировать весь скрипт.
-
@UserTrue said in Поиск по определённой части строки в списке/ресурсе:
@Fox Я сильно не вникал, но как я понял его потоки это не реальные потоки внутри процесса. Может ошибаюсь, но даже по ощущениям он работает так же как движок JS, есть цикл событий который легко блокируется синхронным кодом, который долго выполняется.
В БАС например один поток может заблокировать весь скрипт.
я всё это в 1 потоке изначально хотел сделать:)
-
@ynvazius said in Поиск по определённой части строки в списке/ресурсе:
я всё это в 1 потоке изначально хотел сделать:)
xD
-
-
@ynvazius said in Поиск по определённой части строки в списке/ресурсе:
И в след потоках он будто не начинает чекать с начала, а дальше идёт по списку
Так и должно быть. Если хотите использовать в каждом потоке все элементы с самого начала, то вам использовать ресурс в список или просто прочитать в файл в список и работать уже со списком
-