Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 10, 2015 23:11:34

kampella
Зарегистрирован: 2014-11-21
Сообщения: 95
Репутация: +  1  -
Профиль   Отправить e-mail  

Как грамотно распределить таски в тредах

Нужно спарсить 100 страниц каждой категории.
Я создаю поток:

thread = threading.Thread(target=Parse.Parser, args = (category, ))

Как можно без использования очередей создать пул, к примеру из 10 потоков, и распределить им парсинг этих 100 страниц?

Офлайн

#2 Апрель 11, 2015 09:07:08

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Как грамотно распределить таски в тредах

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



Отредактировано doza_and (Апрель 11, 2015 09:10:05)

Офлайн

#3 Апрель 11, 2015 10:47:13

kampella
Зарегистрирован: 2014-11-21
Сообщения: 95
Репутация: +  1  -
Профиль   Отправить e-mail  

Как грамотно распределить таски в тредах

В случае очередей придется для каждой категории генерировать очередь тасков (кол-во страниц для парсинга). Учитывая что кол-во страниц в каждой категории - статичное число, я подумал будет избыточным каждый раз генерировать заново очередь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version