Найти - Пользователи
Полная версия: Как грамотно распределить таски в тредах
Начало » Python для новичков » Как грамотно распределить таски в тредах
1
kampella
Нужно спарсить 100 страниц каждой категории.
Я создаю поток:
thread = threading.Thread(target=Parse.Parser, args = (category, ))

Как можно без использования очередей создать пул, к примеру из 10 потоков, и распределить им парсинг этих 100 страниц?
doza_and
kampella
Как можно без использования
Уже много раз в разных контекстах встречал постановку именно в таком виде. Как сделать что-то без использования XXX. И каждый раз никаких пояснений почему не устраивает XXX. Как отвечать на такой вопрос, когда непонятно что вас не устраивает в существующем решении? Если не описана проблема, как предлагать способы ее решения? Надеюсь понятно выразился.

Пул потоков конечно нет необходимости создавать. Если задачи известны, создаете спиcок потоков из 10 элементов, делаете список из задач task_list и руками назначаете задачи потокам
thrd=[...]
task_list=[...]
thrd[0].tasks=task_list[0:10]
thrd[1].tasks=task_list[10:20]
....

1. При этом естественно может пострадать балансировка загрузки процессоров, Если задачи неравноценные и некоторые треды закончат обработку раньше других.
2. А парсер у вас на чем написан? Не исключено, что тут лучше использовать multiprocessing. см GIL
kampella
В случае очередей придется для каждой категории генерировать очередь тасков (кол-во страниц для парсинга). Учитывая что кол-во страниц в каждой категории - статичное число, я подумал будет избыточным каждый раз генерировать заново очередь.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB