2016-01-25 5 views
1

Я пытаюсь создать класс с функцией, которая будет делать что-то в фоновом режиме. Я googled и посмотрел на все рассмотрены, и я все еще запутался, почему мой фоновый поток работает все время, он никогда не останавливается ... Я хочу, чтобы мой фоновый поток начинался, и через 3 секунды мой основной поток должен изменить значение переменной и фоновый поток должен остановиться. Вот упрощенный пример моего класса:Python thread dont start

from threading import Thread 
import time 

class ThreadingExample(object): 

    def __init__(self): 
     self._stop = False 
     self._thread = Thread(target=self.run()) 
     self._thread.daemon = True 
     self._thread.start() 

    def run(self): 
     while self._stop == False: 
      print("doing something") 
      time.sleep(1) 

    def stop_run(self): 
     print("stop doing!") 
     self._stop = True 

example = ThreadingExample() 
time.sleep(3) 
example.stop_run() 
print('Bye') 
+2

Не должно быть 'self._stop = True' в методе' stop_run'? –

ответ

3
self._thread = Thread(target=self.run) 

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

+0

Вау, большое спасибо! Какая глупая ошибка ... Я отмечу это как ответ. Еще раз спасибо! – Teemo