Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 16, 2012 10:23:22

Serbis
От:
Зарегистрирован: 2012-02-13
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Не вызывается поток

Код

class ClockThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.daemon = True
print "def __init__"
def run(self):
print "def run"
t = ClockThread()
t.start()
print t.isAlive()
Вывод
>> def_init__
>> True
Что я делаю не так. По идее должен быть вызван метод run(), но он не вызывается, хотя asAlive выводит True, т.е. показывает что он якобы был вызван. В чем тут проблема?



Отредактировано (Фев. 16, 2012 10:26:06)

Офлайн

#2 Фев. 16, 2012 13:45:58

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

Не вызывается поток

Я подозреваю, поток не успевает запуститься. То есть он Alive, но метод run еще не вызван. А так как это поток-демон, то по завершению основного потока он тоже завершается.



Офлайн

#3 Фев. 16, 2012 20:52:26

Serbis
От:
Зарегистрирован: 2012-02-13
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Не вызывается поток

Так оно и есть, поставил while 1 в конце и все получилось. Но вот только непонятно как быть в том случает если например корневой поток закончил свою работу, а дочерний еще нет, и это повлечет критические последствия. Как проверить статус выполнения дочернего процесса?



Отредактировано (Фев. 16, 2012 20:59:18)

Офлайн

#4 Фев. 16, 2012 21:10:30

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Не вызывается поток

t.join() ?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version