python中的定时器
Posted yungcs_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的定时器相关的知识,希望对你有一定的参考价值。
一、qt中使用定时器QTimer
先看效果图
第一部分:界面设计
增加点击事件
保存生成py文件
第二部分:逻辑代码编写
import sys
from testqt.TEST_QT_FROM import Ui_Dialog
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QWidget
import time
class TestQtFromC(QWidget, Ui_Dialog):
def __init__(self):
super(TestQtFromC, self).__init__()
self.setupUi(self)
def test_func(self):
print("test_func running=",time.strftime("%y-%m-%d %H:%M:%S"))
# 开启定时器
def timer2(self):
print("timer2 start")
self.timer = QTimer(self) # 初始化一个定时器
self.timer.timeout.connect(self.test_func)
# 计时结束调用operate()方法
self.timer.start(1000) # 设置计时间隔并启动 1000=10S
def timer_click(self):
print("timer_click")
self.timer2()
pass
if __name__ == '__main__':
app = QApplication(sys.argv)
mUi_Dialog = TestQtFromC()
mUi_Dialog.show()
sys.exit(app.exec_())
二、sched
准确的说,它是一个调度(延时处理机制),每次想要定时执行某任务都必须写入一个调度。
使用sched模块实现的timer,sched模块不是循环的,一次调度被执行后就Over了,如果想再执行,可以使用while循环的方式不停的调用该方法
import time, sched
#被调度触发的函数
def event_method(msg):
print("Now-Time:", time.strftime("%y-%m-%d %H:%M:%S"), 'msg:', msg)
def run_method():
#初始化sched模块的scheduler类
msched = sched.scheduler(time.time, time.sleep)
#设置一个调度,因为time.sleep()的时间是一秒,所以timer的间隔时间就是sleep的时间,加上enter的第一个参数
msched.enter(0, 2, event_method, ("Timer-ruinging.",))
msched.run()
def timer1():
while True:
#sched模块不是循环的,一次调度被执行后就Over了,如果想再执行,可以使用while循环的方式不停的调用该方法
time.sleep(1)
run_method()
if __name__ == "__main__":
timer1()
三、Timer
Timer类也是一次性触发的,思路和sched大概差不多
import time
import threading
threadc=None
def timer_start():
threadc = threading.Timer(1, test_func, ("Parameter1",))
threadc.start()
#threadc.cancel()#可取消threadc
def test_func(msg1):
print("I'm test_func,", msg1)
timer_start()
def timer2():
timer_start()
while True:
time.sleep(1)
if __name__ == "__main__":
timer2()
以上是关于python中的定时器的主要内容,如果未能解决你的问题,请参考以下文章