2016-01-21 3 views
1

Я хочу вызвать upfunction и остановиться, когда он записывает 3 в имени файла. В принципе, я хочу остановить поток после выполнения условия, как показано ниже.Остановка нити после согласования состояния

def getstatus(): 
    fh = open(filename,'r') 
    return fh.read() 

def upfunction(arg): 

    for i in range(arg): 
     print ("backup running") 
     print(getstatus()) 
     target = open(filename, 'w') 
     target.write(str(i)) 
     sleep(1) 



if __name__ == "__main__": 
    thread = Thread(target = upfunction, args = (10,)) 
    thread.start() 
    print(getstatus()) 
    while getstatus() != "3": 
     print("NOT 3 ") 
     sleep(0.5) 
     continue 


    thread.stop() 
    print("thread finished...exiting") 

Это показывает

AttributeError: 'Thread' object has no attribute 'stop'

Пожалуйста, мне, как новичку в питоне. Любая помощь будет высоко оценен

ответ

2

«Тема» объект не имеет атрибута «стоп» является полезным ответ от питона Интерпретатор вам

Вы должны установить условие завершения нити к upfunction.

def upfunction(arg): 
     i = 0 
     while getstatus() != "3": 
      print ("backup running") 
      print(getstatus()) 
      target = open(filename, 'w') 
      target.write(str(i)) 
      i += 1 
      sleep(1) 

if __name__ == "__main__": 
    thread = Thread(target = upfunction, args = (10,)) 
    thread.start() 
    print(getstatus()) 
    print("thread finished...exiting") 
+0

'threading.Event' уже существует. – erip

+1

@erip Я согласен с вами, но для новичков мой ответ более понятен, ИМХО –

1

Вы можете использовать метод threading deamon для уничтожения этой новой темы.

thread.start() 
thread.deamon() 

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

1

Вот несколько пояснений относительно правильного способа сделать это: Is there any way to kill a Thread in Python?.

А как сказал Лекс [0], вы можете добавить условие (в аргументах upfunction), чтобы остановить вашу целевую функцию.

Смежные вопросы