@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Как реализовать многопоток с разными страницами в каждом потоке https://www.сайт.домен&p=номер страницы (РЕШЕНО)
-
@sadsd111 said in Многопоток + парсер:
@Fox У меня таков алгоритм скрипта : БАС заходит на страницу / категорию?page=... После, по этомй категории проходит по страницам, в зависимости от их количества и парсит ссылку с каждого объявления на этой странице и записывает в файл. Потому и каждый поток, отработав свою ссылку, опять начинает повторять.
Повторюсь, вашу задачу проще решить используя ресурсы. Создайте локальный ресурс и запишите все данные в него, а во вновь запущенных потоках используйте этот локальный ресурс
-
@sadsd111 said in Многопоток + парсер:
@Fox А есть пример как это сделать?
Сделать что? Вам нужно выполнить действие "Создать Ресурс" и следом "Список В Ресурс"
-
Мне нужно реализовать многопоток с разными страницами в каждом потоке
https://www.сайт.домен&p=номер страницыЕсть варианты:
- https://www.сайт.домен&p=[[THREAD_INDEX]] + [[CYCLE_INDEX]]
- Создать ресурс и заполнить его номерами страниц (Выходит ошибка в сообщении выше)
- ???
-
@sadsd111 said in Как реализовать многопоток с разными страницами в каждом потоке https://www.сайт.домен&p=номер страницы:
Мне нужно реализовать многопоток с разными страницами в каждом потоке
https://www.сайт.домен&p=номер страницыЕсть варианты:
- https://www.сайт.домен&p=[[THREAD_INDEX]] + [[CYCLE_INDEX]]
- Создать ресурс и заполнить его номерами страниц (Выходит ошибка в сообщении выше)
- ???
-
@sadsd111 said in Как реализовать многопоток с разными страницами в каждом потоке https://www.сайт.домен&p=номер страницы:
@Fox Извините, а как скрипт правильно открыть?
Копирую код в test.xml и выходит сообщение: "Ошибка загрузки файла : Expected '#' or '[a-zA-Z]', but got '&'."правой клавишей на ссылку нажмите и в выпадающем меню выберите "сохранить как"
-
@Fox said in Как реализовать многопоток с разными страницами в каждом потоке https://www.сайт.домен&p=номер страницы:
@sadsd111 said in Как реализовать многопоток с разными страницами в каждом потоке https://www.сайт.домен&p=номер страницы:
Мне нужно реализовать многопоток с разными страницами в каждом потоке
https://www.сайт.домен&p=номер страницыЕсть варианты:
- https://www.сайт.домен&p=[[THREAD_INDEX]] + [[CYCLE_INDEX]]
- Создать ресурс и заполнить его номерами страниц (Выходит ошибка в сообщении выше)
- ???
Спасибо за скрипт. Решил проблему.
Все создается в OnApplicationStart
- Создаем список [[НАЗВАНИЕ]]
- Создаем цикл FOR от "1" до "100" - 1 и 100 номера страниц
- В цикле FOR создаем действие "Добавить Элемент" и в нем в "Переменная, содержащая список" указываем список [[НАЗВАНИЕ]] из п.1 , а в "Значение для добавления" выбираем переменную [[CYCLE_INDEX]]
- Выбираем действие создать ресурс. В настройках ресурса ставите свое название и "Интервалы между использованиями " можете по дефолту оставить, а в остальных полях ставите единицу.
- Преобразуем список в ресурс "Имя ресурса" берем из п.4 , а "Переменная со списком" из п.1
-
@Fox said in Как реализовать многопоток с разными страницами в каждом потоке https://www.сайт.домен&p=номер страницы:
@sadsd111 said in Как реализовать многопоток с разными страницами в каждом потоке https://www.сайт.домен&p=номер страницы:
@Fox Извините, а как скрипт правильно открыть?
Копирую код в test.xml и выходит сообщение: "Ошибка загрузки файла : Expected '#' or '[a-zA-Z]', but got '&'."правой клавишей на ссылку нажмите и в выпадающем меню выберите "сохранить как"
Тоже разобрался с проблемой.
У кого тоже не скачивается скрипт, а открывается в браузере:- Кликаем на скрипт, код скрипта откроется в браузере
- Нажимаем ПКМ из списка выбираем действие "Исследовать элемент"
- Переходим во вкладку "Sources"
- С левой стороны будет файл с расширением .xml
- Жмем по нему ПКМ и жмем "Safe as"
