一旦条件匹配,如何停止线程

4

我希望触发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")

这显示:

属性错误:'Thread'对象没有属性'stop'

请把我当作Python的新手。任何帮助将不胜感激。

3个回答

3

'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
@erip 我同意你的观点,但对于新手来说,我认为我的回答更易懂。在我看来。 - Lex Hobbit

1
你可以使用线程守护方法来终止这个新线程。
thread.start()
thread.deamon()

当主线程结束时,此自定义线程也会终止。因此没有必要这样做。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接