Уведомления

Группа в Telegram: @pythonsu

#1 Май 27, 2011 16:59:19

Doc.X
От:
Зарегистрирован: 2011-05-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Питон и потоки

Задача запустить 10 потоков и дождаться пока они отработают.

class ProxyThread(threading.Thread):
def run(self):
ProxyThread.open += 1;
list = ProxyThread.list
while len(list):

item = list.pop()
# проверка
#time.sleep(10)
ProxyThread.open -= 1;

# запускаем потоки
for x in xrange(10):
ProxyThread().start()

# ожидаем
while ProxyThread.open:
time.sleep(1)

# продожаем
Вопрос - верно ли я реализую эту задачу?
Если да то в цикле while лучше писать sleep или pass ?
Спасибо.



Офлайн

#2 Май 27, 2011 17:51:19

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Питон и потоки

threading.Thread.join



Офлайн

#3 Май 27, 2011 18:05:26

Doc.X
От:
Зарегистрирован: 2011-05-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Питон и потоки

В моём случае

# ожидаем
ProxyThread.join()

# продолжаем
?



Отредактировано (Май 27, 2011 18:05:48)

Офлайн

#4 Май 27, 2011 19:41:41

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Питон и потоки

threads = [ProxyThread() for x in xrange(10)]

for th in threads:
th.start()

for th in threads:
th.join()



Офлайн

#5 Май 27, 2011 20:02:10

Doc.X
От:
Зарегистрирован: 2011-05-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Питон и потоки

Спасибо.



Офлайн

#6 Май 27, 2011 21:08:54

Doc.X
От:
Зарегистрирован: 2011-05-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Питон и потоки

Если внутри метода run запустить другую функцию то она останется в потоке?



Офлайн

#7 Май 27, 2011 21:33:39

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

Питон и потоки

да



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version