使用了Python thread 写了一个小程序。
希望:在程序运行期间,若强关软件,所有子进程需要停止执行。
但是即使使用了setDaemon(True),依旧无法停止进程。Print依旧在跑。这是为何?
代码如下:
# -*- coding: utf-8 -*-
'''
【简介】
PyQT5中 QTimer例子 改版
'''
import string, threading, time
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
global sec
sec=0
global stoptimer
stoptimer=False
def run123():
for i in range(100000):
print(i)
global stoptimer
stoptimer=True
print(stoptimer)
return
def countTime():
global sec
sec += 1
# LED显示数字+1
lcdNumber.display(sec)
def work():
# 计时器每秒计数
timer.start(1000)
global stoptimer
t1 = threading.Thread(target=run123, args=())
t1.setDaemon(True)
t1.start()
t2 = threading.Thread(target=timeStop, args=())
t2.setDaemon(True)
t2.start()
def timeStop():
global stoptimer
while stoptimer==False:
time.sleep(1)
timer.stop()
print("运行结束用时",lcdNumber.value())
global sec
sec=0
if __name__ == "__main__":
app = QApplication(sys.argv)
top = QWidget()
top.resize(300,120)
# 垂直布局类QVBoxLayout
layout = QVBoxLayout(top)
# 加个显示屏
lcdNumber = QLCDNumber()
layout.addWidget(lcdNumber)
button = QPushButton("测试")
layout.addWidget(button)
timer = QTimer()
button.clicked.connect(work)
# 每次计时结束,触发 countTime
timer.timeout.connect(countTime)
top.show()
sys.exit(app.exec_())