我想触发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的新手。 任何帮助将受到高度赞赏
答案 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
参数中)来停止目标函数。