当前位置: 首页 > 编程笔记 >

python 轮询执行某函数的2种方式

方昊阳
2023-03-14
本文向大家介绍python 轮询执行某函数的2种方式,包括了python 轮询执行某函数的2种方式的使用技巧和注意事项,需要的朋友参考一下

目标:python中每隔特定时间执行某函数

方法1:使用python的Thread类的子类Timer,该子类可控制指定函数在特定时间后执行一次:

所以为了实现多次定时执行某函数,只需要在一个while循环中多次新建Timer即可。

from threading import Timer
import time
 
def printHello():
 print ("Hello")
 print("当前时间戳是", time.time())
 
def loop_func(func, second):
 #每隔second秒执行func函数
 while True:
  timer = Timer(second, func)
  timer.start()
  timer.join()
 
loop_func(printHello, 1)

运行结果如下:

Hello
当前时间戳是 1569224253.1897497
Hello
当前时间戳是 1569224254.1911764
Hello
当前时间戳是 1569224255.1924803
Hello
当前时间戳是 1569224256.1957717
Hello
当前时间戳是 1569224257.1964536
……

方法2:使用time模块的sleep函数可以阻塞程序执行

import time
 
def printHello():
 print ("Hello")
 print("当前时间戳是", time.time())
 
def loop_func(func, second):
 # 每隔second秒执行func函数
 while True:
  func()
  time.sleep(second)
 
loop_func(printHello, 1)

运行结果如下:

Hello
当前时间戳是 1569224698.5843027
Hello
当前时间戳是 1569224699.5843854
Hello
当前时间戳是 1569224700.5870178
Hello
当前时间戳是 1569224701.5881224
Hello
当前时间戳是 1569224702.588771
Hello
当前时间戳是 1569224703.5896
Hello
当前时间戳是 1569224704.5902
……

总结:感觉方法2更节约资源,因为同样使用了while循环,方法2没有生成多余的线程,但是方法1会生成很多的线程

以上这篇python 轮询执行某函数的2种方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Python 脚本的三种执行方式小结,包括了Python 脚本的三种执行方式小结的使用技巧和注意事项,需要的朋友参考一下 1.交互模式下执行 Python,这种模式下,无需创建脚本文件,直接在 Python解释器的交互模式下编写对应的 Python 语句即可。 1)打开交互模式的方式: Windows下: 在开始菜单找到“命令提示符”,打开,就进入到命令行模式: 在命令行模式输入:

  • 本文向大家介绍Python函数中定义参数的四种方式,包括了Python函数中定义参数的四种方式的使用技巧和注意事项,需要的朋友参考一下 Python中函数参数的定义主要有四种方式: 1. F(arg1,arg2,…) 这是最常见的定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义的函数在调用的的时候也必须在函数名后的小括号里提供个数相等 的值(实际参数),而且顺序必须相同,

  • 问题内容: 以下代码在Python2和中给出了不同的输出Python3: Python2 印刷品: Python3 印刷品: 为什么不Python2将函数b内部的变量绑定到函数字符串中的值,而Python3却不这样做呢?如何实现 的行为Python3?我已经尝试过通过字典让全局变量和本地变量在中exec起作用Python3,但到目前为止没有任何效果。 -编辑- 在阅读的答案之后,我用进行了进一步分

  • 下面这段代码中,为何 ws.send_text("1") 必须等待 load_dataset("beans") 加载完毕才会执行呢? 不应该是先执行 ws.send_text("1") 然后再执行 load_dataset("beans") 吗? load_dataset 是一个 加载模型数据集的函数。

  • 主要内容:SqlSession发送SQL,Mapper接口发送 SQL,区别本节主要介绍 MyBatis 执行 SQL 语句的两种方式和它们的区别。 MyBatis 有两种执行 SQL 语句的方式,如下: 通过 SqlSession 发送 SQL 通过 SqlSession 获取 Mapper 接口,通过 Mapper 接口发送 SQL SqlSession发送SQL 有映射器之后就可以通过 SqlSession 发送 SQL 了。我们以 getWebsite 这条 SQ

  • 本文向大家介绍Python 取numpy数组的某几行某几列方法,包括了Python 取numpy数组的某几行某几列方法的使用技巧和注意事项,需要的朋友参考一下 直接分析,如原矩阵如下(1):   (1) 我们要截取的矩阵(取其一三行,和三四列数据构成矩阵)为如下(2):   (2) 错误分析: 取 C 的1 3行,3 4 列,定义 则结果为: 由结果分析取的是第一行第三列和第三行第四列的数据,并非