python - 在被杀死的线程中无法终止 While 循环
问题描述
我的脚本的重点是让一个名为 stopper 的函数在到达某个时间后向函数 go_to 发送终止线程事件。
目前,该事件被触发,线程应该关闭,并且停止器已结束。但是 go_to 继续打印到命令行。
我不知道如何正确停止它。
import threading
import time
class Stop_Check(object):
def __init__(self):
self.thread1Stop = threading.Event()
def stopper(self):
t = 0
while True:
t = t + 1
time.sleep(1.0)
if t == 3 :
self.thread1Stop.set()
break
else :
print("I'm still going...")
time.sleep(1.0)
continue
print("terminated")
def go_to(self):
while (not self.thread1Stop.is_set()):
print("I am working!")
time.sleep(1.0)
def main(self):
t1 = threading.Thread(target=self.go_to)
t1.start()
self.stopper()
time.sleep(5.0)
if __name__ == '__main__' :
sc = Stop_Check()
sc.main()
解决方案
我尝试在名为 Atom 的软件之外的终端中运行脚本。现在它按预期终止。感谢@Steven 确认它有效!仍然不确定为什么会发生这种行为。
推荐阅读
- android - firebase的实时数据库没有显示数据(显示空)
- flutter - 复选框:如何一个一个地划掉文本而不是完全颤振
- python - 运行循环 30 次后,Python selenium web 抓取崩溃
- vba - 使用宏插入纯文本内容控件
- sql - 如何合并计数?
- javascript - Meteor Session setPersistent
- batch-file - 批处理文件中间的2是什么意思?
- c++ - “可变大小的对象可能未初始化” - 这是什么意思,为什么我会收到这种类型的错误?
- aws-lambda - 在 virtualenv 中安装 minizinc | Zappa 无法识别 virtualenv 之外的依赖项
- javascript - 追加后表单数据显示为空