一旦条件匹配就停止一个线程

时间:2016-01-21 12:31:52

标签: python multithreading

我想触发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:'线程'对象没有属性'停止'

请将我视为python的新手。 任何帮助将受到高度赞赏

3 个答案:

答案 0 :(得分:2)

'Thread'对象没有属性'stop'是python解释器给你的有用答案

您应该将线程终止条件置于 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")

答案 1 :(得分:1)

你可以使用线程deamon方法来杀死这个新线程。

thread.start()
thread.deamon()

当主线程结束时,这个自定义线程也会死掉。所以没有必要。

答案 2 :(得分:1)

以下是关于正确方法的一些解释:Is there any way to kill a Thread in Python?

正如Lex所说[0],您可以添加条件(在upfunction参数中)来停止目标函数。