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中的定时器的主要内容,如果未能解决你的问题,请参考以下文章

Python定时点击桌面程序,可修改点击间隔

python获取两个时间间隔的天数

python获取两个时间间隔的天数

js中的计时器事件`setTimeout()` 和 `setInterval()`

解决js key中的时间间隔

APScheduler定时任务框架