|
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 4
|
|||||||||||
Многопоточный вызов метода22.08.2014, 10:16. Показов 1612. Ответов 7
Метки нет (Все метки)
Есть некий сайт, страницы которого нужно спарсить (использую Html Agility Pack). Вызов начала парсинга происходит по нажатию кнопки в форме, парсинг в PageParse классе и скачивание страницы в PageDownload. Но если страниц много, то это занимает приличное кол-во времени.
Я попытался использовать для ускорения ThreadPool, но тогда более поздние потоки скачивают страницу своего номера, т.е. из 6 страниц скачивается и обрабатывается 3 и 6, а 1, 2, 4, 5 поток тупо не успевают обработать свои страницы и обрабатывают 3 и 6. Я понимаю, что нужно как-то увеличить действие потока на класс скачивания страницы, но не знаю как это сделать. Написал, скорее всего, непонятно, но сейчас у самого в голове каша. Буду благодарен за любую помощь ![]() Вот вызов метода для парсинга:
0
|
|||||||||||
| 22.08.2014, 10:16 | |
|
Ответы с готовыми решениями:
7
Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода Вызов методов классов друг у друга (вызов метода из другого класса) Вызов переменной метода A из метода В |
|
|
||
| 22.08.2014, 12:11 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 4
|
|
| 22.08.2014, 12:51 [ТС] | |
|
insite2012, безразлично. Мне просто нужно выдернуть с них информацию, обработать ее и записать в лист(список).
0
|
|
|
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 4
|
|
| 22.08.2014, 13:26 [ТС] | |
|
XRoy, это немного не верно, сам цикл, скачивание и обработка разделены на 3 части для удобства, т.к. в ближайшем будущем придется скачивать и обрабатывать не только этот сайт, а и другие. Поэтому Parallel.For мне не очень подходит, или я просто не умею его правильно использовать..
0
|
|
|
|
|
| 22.08.2014, 21:35 | |
|
Hamikadze, как я вижу вашу логику: несколько потоков, каждый качает свою страницу. По окончании скачки каждый поток передает свою порцию данных в очередь типа Producer/Consumer, где все данные и обрабатываются, заносятся в список и так далее.
0
|
|
|
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 4
|
|
| 23.08.2014, 03:38 [ТС] | |
|
insite2012, да так и есть.
0
|
|
|
|
|
| 23.08.2014, 10:41 | |
|
Hamikadze, ну значит так и реализуйте задачу. Несколько потоков, скачивают свои страницы. И отдельный поток, обрабатывающий информацию. Этот поток взаимодействует с остальными (поставщиками, так скажем) через EventWaitHandle, общий для всех потоков. Пришел один пакет - обработчик начал его обрабатывать, а остальные потоки (из тех, что уже закончили скачивание) ждут свое очереди на передачу обработчику своего блока данных.
0
|
|
| 23.08.2014, 10:41 | |
|
Помогаю со студенческими работами здесь
8
вызов метода Наследование и вызов метода Потокобезопасный вызов метода Вызов метода в цикле While Двойной вызов метода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|