Найти - Пользователи
Полная версия: Не завершается поток! Как решить? Помогите...
Начало » Python для новичков » Не завершается поток! Как решить? Помогите...
1
pal201
Делаю так:
class Connect(threading.Thread):
def __init__(self, printer):
self.printer=printer
threading.Thread.__init__(self,name='thre',target=self.run)

def __call__(self):

if self.isAlive():
print ‘PASS’
else:
#self.join()
print ‘123123’
#print self.isDaemon()
print self.isAlive()
time.sleep(1)
self.start()

def run(self):
gl=

for name in gl:
тут всякие комманды ….


if gui.response(): # тут из gui вызываем кнопочку с вопросом да/нет

pass #если нет, то завершаем метод
else:
self.printer('Работа завершена')


print self.isAlive()
print ‘EXIT’
sys.exit(1)

проблема в том, что когда я вызваю метод run, проверяю на существование поока, и он не существует и нормально запускает метод run в отдельном потоке.
Далее, после того как метод завершит работу, проверяю, сужествует ли? Пишет false, казалось бы правильно, пытается запустить метод run, но тот не запускается, пишет вот что:
File “gui.py”, line 40, in __call__
self.start()
File “/usr/lib/python2.6/threading.py”, line 465, in start
raise RuntimeError(“thread already started”)
RuntimeError: thread already started

то есть поток продолжает существовать. Как его уничтожить или я что-то жедаю не так?
и sys.exit не работает…..
Спасибо!
Viper
Из документации:
start()
Start the thread’s activity.
It must be called at most once per thread object. It arranges for the object’s run() method to be invoked in a separate thread of control.
This method will raise a RuntimeException if called more than once on the same thread object.

Для второго вызова нужно создавать новый обьект Connect, а не использовать старый.
pal201
То есть я после завершения потока не могу его вызвать снова? Нужно создавать экземпляр класса и использовать его? Или что имеется ввиду? Дествительно, если вызвать поток в то время, как он работает, то будет ошибка. Но ведь я проверяю, если он isAlive() то ничего не делаю, и только в противном случае запкскаю, вот в этот момент и возникает ошибка…
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