Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 24, 2012 00:23:47

x38
От:
Зарегистрирован: 2012-01-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

многопоточность

всем привет.
уже голову сломал, никак не могу разобраться с многопоточностью.

нужно сделать множество запросов к разным скриптам. дабы ускорить процесс хочу сделать это все в несколько потоков. основной скрипт выглядит так:

j =0;
for req in requests:
#тут вычисляются param1 и param2
if makeRequest (urls[j], req, param1, param2):
print "ok"
j += 1
if j >= len(urls):
j = 0
вот собственно хотелось бы чтобы одновременно выполнялось несколько (например 10) makeRequest, чтобы при завершении одной, начинала выполняться следующая. доки почитал но что то совсем ничего не пойму. ранее с многопоточностью, к своему стыду, дел не имел. помогите люди добрые.



Отредактировано (Янв. 24, 2012 00:24:41)

Офлайн

#2 Янв. 24, 2012 04:44:17

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

многопоточность

используйте модуль threading
создайте свой класс где в конструкторе инициализируете класс threading, там опишите метод run. Т.е. данный метод (ряд операций) будет проходить с каждым объектом. Чтоб запустить нужно вызвать не run а start.
Так же ознакомьтесь с очередями Queue.
И что то не совсем понял

x38
вот собственно хотелось бы чтобы одновременно выполнялось несколько (например 10) makeRequest, чтобы при завершении одной, начинала выполняться следующая
Вы уж определитесь либо одновременно (параллельно) с использованием потоков, либо последовательно без их применения :)

http://www.ibm.com/developerworks/aix/library/au-threadingpython/ # почти один в один но там чтение сайтов
http://keysolutions.ru/articles/osnovy-raboty-s-potokami-v-python

Офлайн

#3 Янв. 25, 2012 18:12:02

x38
От:
Зарегистрирован: 2012-01-24
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

многопоточность

спасибо, получилось

Piton23
Вы уж определитесь либо одновременно (параллельно) с использованием потоков, либо последовательно без их применения
я определился :) имелось в виду что одновременных потоков будет фиксированное число, например 10. и пока 10 потоков выполняется, остальные задачи стоят в очереди, и по завершению какого либо потока, создавался новый. собственно это решил через Queue



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version