python单线程实现多个定时器示例

Python单线程实现多个定时器的示例主要分为两种方式:使用time库和使用sched库。

使用time库实现多个定时器

示例一:

import time

def func1():
    print("func1 called")

def func2():
    print("func2 called")

while True:
    now = time.strftime("%H:%M:%S", time.localtime())
    if now == "23:59:59":
        func1()
    elif now == "00:00:00":
        func2()
    time.sleep(1)

此段代码中,我们使用了time库中的strftime函数来获取系统当前时间,然后判断当前时间是否是定时器的触发时间。在示例中,我们设定了两个定时器:一个在23:59:59触发,另一个在00:00:00触发。当时间到达触发时间时,我们执行相应的函数。

示例二:

import time

def func():
    print("func called")
    time.sleep(10)

start_time = time.time()

while True:
    if time.time() - start_time > 5:
        func()
        start_time = time.time()

此段代码中,我们同样使用了time库,但这次我们利用time库的time函数以及time计算函数的差值来实现了定时器。代码中,我们定义了一个名为“func”的函数,其中包含了10秒的时间延迟。在while循环中,我们使用time函数获取当前时间,并计算当前时间与开启程序的时间差值是否大于5秒,如果大于5秒,我们执行相应的函数并将时间重置。

使用sched库实现多个定时器

示例一:

import sched
import time

s = sched.scheduler(time.time, time.sleep)

def func1():
    print("func1 called at", time.strftime("%H:%M:%S", time.localtime()))

def func2():
    print("func2 called at", time.strftime("%H:%M:%S", time.localtime()))

s.enterabs(time.mktime(time.strptime("23:59:59", "%H:%M:%S")), 1, func1, ())
s.enterabs(time.mktime(time.strptime("00:00:00", "%H:%M:%S")), 1, func2, ())

s.run()

此段代码中,我们使用了sched库中的scheduler函数来创建了一个调度器。使用enterabs函数我们设定了两个定时器,一个在23:59:59触发,另一个在00:00:00触发,当时间到达触发时间时,我们执行相应的函数。

示例二:

import sched
import time

s = sched.scheduler(time.time, time.sleep)

def func(sc):
    print("func called at", time.strftime("%H:%M:%S", time.localtime()))
    s.enter(5, 1, func, (sc,))

s.enter(5, 1, func, (s,))
s.run()

此段代码同样使用了sched库中的scheduler函数创建了一个调度器,但此次我们使用了enter函数来实现了定时器。代码中,我们定义了一个名为“func”的函数,并使用s.enter函数定时执行。在函数内部,我们打印出当前时间,并使用s.enter函数将函数自身加入调度器中实现了循环调用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python单线程实现多个定时器示例 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • python多线程扫描端口(线程池)

    下面我将详细讲解“python多线程扫描端口(线程池)”的完整攻略。 线程池的概念 线程池是一种应对高并发、高频率任务的一种解决方案,它将线程复用起来,减少了创建、销毁线程的开销,从而提高了程序的效率。 当我们需要同时进行多个扫描时,就需要采用多线程的方式来进行。而线程池则是一种比较好用的多线程技术,它可以控制线程的数量,避免资源的浪费,让线程在需要时自动重…

    python 2023年5月19日
    00
  • python 获取et和excel的版本号

    下面是Python获取ET和Excel的版本号的完整实例教程。 1.概述 ET是Python下的XML解析库,常用于处理XML和HTML数据。而Excel是一款电子表格软件,由微软公司开发。在处理ET和Excel文件的时候,有时候需要获取它们的版本号,可以帮助我们更好地了解这些工具的功能和特性。 2.获取ET版本号 获取ET版本号比较简单,只需要少量Pyth…

    python 2023年5月14日
    00
  • python通过urllib2爬网页上种子下载示例

    下面就详细讲解一下“Python通过urllib2爬网页上种子下载示例”的完整攻略。 准备工作 在使用Python爬虫之前需要先安装urllib2模块,可以在Python交互式命令行输入以下指令安装: pip install urllib2 爬取网页 首先,需要使用Python的urllib2库读取目标网页的内容。可以使用以下代码: import urlli…

    python 2023年6月3日
    00
  • Python中Selenium模块的使用详解

    Python中Selenium模块的使用详解 Selenium是一个自动化测试工具,可以模拟用户在浏览器中的操作,例如点击、输入、提交等。在Python中,可以使用Selenium模块来实现自动化测试。本文将详细介绍Python中Selenium模块的使用方法,包括安装、配置、基本操作和常见问题解决方案。 安装和配置 在使用Selenium之前,需要先安装S…

    python 2023年5月15日
    00
  • Python之random库的常用函数有哪些

    接下来我会详细讲解“Python之random库的常用函数有哪些”的完整攻略。 一、背景介绍 Python之random库是Python标准库中的一个模块,主要用来生成随机数。它提供了各种生成随机数的函数,包括生成整数、浮点数、随机序列等。其中,常用的函数包括: 二、常用函数介绍 1. random() random()函数用于生成0到1之间的随机浮点数。示…

    python 2023年6月3日
    00
  • 学python安装的软件总结

    学 Python 安装的软件总结 在学习和使用 Python 过程中,我们可能需要安装一些相关的软件包或工具来辅助我们进行开发或者数据处理。下面就介绍一下常见的 Python 相关软件包的安装方法,以及常见的问题及解决方法。 Python Python 是我们进行 Python 开发的核心环境,它是一种解释性语言,可以直接在命令行或者脚本中执行。我们可以通过…

    python 2023年5月30日
    00
  • python爬虫之pyppeteer库简单使用

    Python爬虫之Pyppeteer库简单使用攻略 Pyppeteer是一个基于Python的无头浏览器库,它提供了与Chrome或Chromium浏览器的交互接口,可以用于模拟用户在浏览器中的操作,如点击、输入、滚动等。本攻略将介绍如何使用Pyppeteer库进行Python爬虫编程。 步骤1:安装Pyppeteer库 在使用Pyppeteer库之前,我们…

    python 2023年5月15日
    00
  • Python网络爬虫原理及实践

    作者:京东物流 田禹 1 网络爬虫 网络爬虫:是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 网络爬虫相关技术和框架繁多,针对场景的不同可以选择不同的网络爬虫技术。 2 Scrapy框架(Python) 2.1. Scrapy架构 2.1.1. 系统架构 2.1.2. 执行流程 总结爬虫开发过程,简化爬虫执行流程如下图所示: 爬虫运行主要流程如下…

    python 2023年5月4日
    00
合作推广
合作推广
分享本页
返回顶部