@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Поиск и замена в тексте по маскам
-
@Bigma said in Поиск и замена в тексте по маскам:
@YaFrolis Еще раз, у тебя два идущих подряд закрывающих в таком виде еще есть где то кроме заголовков ?
</u></div>Нету. Но именно такого может и не быть. А вот по маске -
"любые символы<div class="h1">любые символы</div>любые символы"точно есть совпадение.
-
@YaFrolis said in Поиск и замена в тексте по маскам:
@Bigma said in Поиск и замена в тексте по маскам:
@YaFrolis Еще раз, у тебя два идущих подряд закрывающих в таком виде еще есть где то кроме заголовков ?
</u></div>Нету. Но именно такого может и не быть. А вот по маске -
"любые символы<div class="h1">любые символы</div>любые символы"точно есть совпадение.
даже вот так
"любые символы<div class="h1">наименьшее количество символов</div>любые символы" -
-
Или так
https://regex101.com/r/qAYh1n/1но брать надо первое вхождение
-
@Bigma said in Поиск и замена в тексте по маскам:
Или так
https://regex101.com/r/qAYh1n/1но брать надо перво вхождение
Спасибо. Вот это работает как нада.
-
@YaFrolis said in Поиск и замена в тексте по маскам:
Есть тексты с html тегами.
Тексты перебираю циклом.
В одних текстах заголовки выделены
"текст <div class="h1"><u>Заголовок</u></div> текст"В других по другому
"текст <font size=5><i>Заголовок</i></font> текст"Необходимо задать несколько точных масок и если по маске подошло - заменять.
Из этого
"текст <div class="h1"><u>Заголовок</u></div> текст" "текст <font size=5><i>Заголовок</i></font> текст"Нужно получать такое -
"текст <h1><u>Заголовок</u></h1> текст" "текст <h1><i>Заголовок</i></h1> текст"Действие "выполнить код"
[[RESULT]] = [[TEMPLATE_RESULT]].replace(/<div class="h1">(.*?)<\/div>/gi, "<h1>$1</h1>").replace(/<font size=5>(.*?)<\/font>/gi, "<h1>$1</h1>")тестовый скрипт
-
@Bigma said in Поиск и замена в тексте по маскам:
@Fox Где почитать, как делать такие штуки ?
Если про replace, то ссылку дали выше. Кстати моя регулярка не сработает, если между тегами будут переносы строки, для этого нужно немого изменить регулярку:
[[RESULT]] = [[TEMPLATE_RESULT]].replace(/<div class="h1">([\s\S]*?)<\/div>/gi, "<h1>$1</h1>").replace(/<font size=5>([\s\S]*?)<\/font>/gi, "<h1>$1</h1>") -
@Fox Чето по той ссылке так не научишься :)
я просто не понял как
/ /gi превращается в $1:)
Хотя кажется дошло, все что регулярка, превращается в шаблон 1, вторая отдельная регулярка превратиться в шаблон два, главное регулярку в круглые скобки заключить, кажется так. А gi это глобальное сопоставление без учета регистра.
-
@Bigma said in Поиск и замена в тексте по маскам:
@Fox Чето по той ссылке так не научишься :)
я просто не понял как
/ /gi превращается в $1:)
Хотя кажется дошло, все что регулярка, превращается в шаблон 1, вторая отдельная регулярка превратиться в шаблон два, главное регулярку в круглые скобки заключить, кажется так.
Почему же не научишься?
giэто флаги регулярного выражения:
Символ
$1это подстановка строки из первой скобочной группы()
-
Да уже дошло, спасибо еще раз за развернутый ответ.
Изящно и удобно.