python重复执行函数_Python threading 单线程 timer重复调用函数
项目中需要使用定时器,每次都使用构造器函数调用:
timer = threading.Timer(timerFlag, upload_position)
timer.start()
打印线程后发现,每次都会创建一个新的子线程,虽然活跃的线程只有一个,但是也是种资源浪费:
print("threading active = {} \n \n".format(threading.enumerate()))
#打印
threading active = [<_mainthread stopped>, ]
threading active = [<_mainthread stopped>, ]
threading active = [<_mainthread stopped>, ]
threading active = [<_mainthread stopped>, ]
threading active = [<_mainthread stopped>, ]
threading active = [<_mainthread stopped>, ]
threading active = [<_mainthread stopped>, ]
阅读源码和文档
class Timer(Thread):
"""Call a function after a specified number of seconds:
t = Timer(30.0, f, args=None, kwargs=None)
t.start()
t.cancel() # stop the timer's action if it's still waiting
"""
def __init__(self, interval, function, args=None, kwargs=None):
Thread.__init__(self)
self.interval = interval
self.function = function
self.args = args if args is not None else []
self.kwargs = kwargs if kwargs is not None else {}
self.finished = Event()
def cancel(self):
"""Stop the timer if it hasn't finished yet."""
self.finished.set()
def run(self):
self.finished.wait(self.interval)
if not self.finished.is_set():
self.function(*self.args, **self.kwargs)
self.finished.set()
# Special thread class to represent the main thread
# This is garbage collected through an exit handler
发现,其实Timer是threading的子类,用wait实现了定时效果,绑定了入参function,于是修改代码如下
def startTimer():
global timer
if timer != None:
timer.finished.wait(timerFlag)
timer.function()
else:
timer = threading.Timer(timerFlag, upload_position)
timer.start()
打印结果:
threading active = [<_mainthread stopped>, ]
threading active = [<_mainthread stopped>, ]
threading active = [<_mainthread stopped>, ]
threading active = [<_mainthread stopped>, ]
threading active = [<_mainthread stopped>, ]
threading active = [<_mainthread stopped>, ]
始终只有一个线程且重复调用函数方法~End~
Python:学会创建并调用函数
这是关于Python的第4篇文章,主要介绍下如何创建并调用函数. print():是打印放入对象的函数 len():是返回对象长度的函数 input():是让用户输入对象的函数 ... 简单来说,函数 ...
Python 学习 第七篇:函数1(定义、调用和变量的作用域)
函数是把一些语句集合在一起的程序结构,用于把复杂的流程细分成不同的组件,能够减少代码的冗余.代码的复用和修改代码的代价. 函数可以0个.1个或多个参数,向函数传递参数,可以控制函数的流程.函数还可以返 ...
Python之调用函数
Python之调用函数 Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数 abs,它接收一个参数. 可以直接从Python的官方网站查 ...
python 调用函数
Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数.可以直接从Python的官方网站查看文档: http://doc ...
python入门(13)获取函数帮助和调用函数
Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数.可以直接从Python的官方网站查看文档: http://doc ...
python调用函数超时设置
1.Windows中sign报错,Linux能很好的使用: https://pypi.python.org/pypi/timeout-decorator 2.Windows可以使用,Linux报错不能 ...
『Python』为什么调用函数会令引用计数+2
一.问题描述 Python中的垃圾回收是以引用计数为主,分代收集为辅,引用计数的缺陷是循环引用的问题.在Python中,如果一个对象的引用数为0,Python虚拟机就会回收这个对象的内存. sys.g ...
python函数(一)调用函数
在python中内置了很多函数或者类,比如:int,str,list,tuple,等.当然也可以自建函数,这个放在后文讨论.原理如下: 其实python中的类和方法非常非常多,这里只是以点带面,提供一 ...
Python&#160;获取被调用函数名称,所处模块,被调用代码行
获取被调用函数名称,所处模块,被调用代码行 by:授客 QQ:1033553122 module2.py: #!/usr/bin/env python # -*- coding:utf-8 -*- _ ...
随机推荐
多线程中使用CheckForIllegalCrossThreadCalls = false访问窗口-转
在多线程程序中,新创建的线程不能访问UI线程创建的窗口控件,如果需要访问窗口中的控件,可以在窗口构造函数中将CheckForIllegalCrossThreadCalls设置为 false publi ...
在Windows上安装虚拟机详细图文教程
用虚拟机来安装最新的软件,安装最新的系统等等比较保险,可以避免安装不顺利影响自己原来的系统和应用,想尝鲜又担心自己完全更换系统不适应的朋友可以尝试. 虚拟机下载:https://yunpan.cn/c ...
[转载] 自定义百度网盘分享密码 (Javascript)
压缩版 javascript:require(["function-widget-1:share/util/service/createLinkShare.js"]).protot ...
Spring 配置自动扫描spring bean配置
python重复执行函数_Python threading 单线程 timer重复调用函数相关推荐
- Python 批量创建线程及threading.Thread类的常用函数及方法
在<[Python]线程的创建.执行.互斥.同步.销毁>(点击打开链接)中介绍了Python中线程的使用,但是里面线程的创建,使用了很原始的方式,一行代码创建一条.其实,Python里是可 ...
- python中什么叫函数_Python 基础起步 (十) 什么叫函数?
Python 函数 大家好,这一期让我们来看看Python中比较核心的知识点:函数(也叫方法),那么到底什么是一个函数呢?先让我引入一个官方一点的定义: 函数是对程序逻辑进行结构化或者过程化的一种编程 ...
- python动态执行语句_Python Language
句法 eval(表达式[,globals = None [,locals = None]]) EXEC(对象) exec(对象,全局) exec(对象,全局,本地) 参数 争论细节expression ...
- python主函数调用格式_Python入门基础中怎么定义函数,函数调用,函数传递参数...
什么是函数和为什么要用函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.已经知道Python提供了许多内建函数,比如print(). ...
- python 定义list长度_python中list列表的高级函数 python如何统计列表的长度
在python的函数中,如何将列表list的一部分作为函比如定义个函数,想实现的功能就是将列表a的后半部分(['c','d'])传入后面paraTestList(a[2:])中,括号里面的a[2:]命 ...
- python去重复的数据_python - 常用数据清洗方法-重复项处理
在数据的处理过程中,一般都需要进行数据清洗工作,如数据集是否存在重复,是否存在缺失,数据是否具有完整性和一致性,数据中是否存在异常值等.发现诸如此类的问题都需要针对性地处理,下面我们一起学习常用的数据 ...
- python内置的数学函数_Python数字和内置数学函数
python内置的数学函数 In this section, we will be learning about Numbers and various Math functions availabl ...
- python中fetchall函数_python中查询数据库时fetchone()函数和fetchall()函数的区别
我们在用python操作数据库的时候,经常会碰见两个函数:fetchone()和fetchall() 刚开始学习的时候可能会搞不清楚他们两个的区别 其实非常简单 首先fetchone()函数它的返回值 ...
- python语言接收信息的内置函数_python接收信息的内置函数是
有的python内置函数怎么就一个pass这个模块是用C实现的,没有Python源码. 所以python代码中只有一个pass,因为代码中都是C实现的. 两种情况: 一种情况是继承的时候会用到的,父类 ...
最新文章
- 056_Avatar头像
- SpringBoot+MyBatisPlus+ElementUI一步一步搭建前后端分离的项目(附代码下载)
- 折叠屏来了,开发者们准备好了吗?
- 北京.net俱乐部博客园小组成立了
- centos mysql pmm_【MySQL】MySQL监控利器PMM
- 孪生三兄弟 CycleGAN, DiscoGAN, DualGAN
- redis源码剖析(十六)——服务端思维导图整理
- java applet socket_Java swing applet中使用的套接字
- layout布局_安卓最常见的几种布局
- 支持向量机中到底什么是支持向量
- 任正非就注册姚安娜商标道歉;人人影视字幕组因盗版被查;JIRA、Confluence 等产品本月停售本地化版本 | 极客头条...
- Prototype使用Form操作表单
- LINQ体验(14)——LINQ to SQL语句之存储过程 夺表
- mapxtreme2008 7.0错误
- 电力系统如何实现时间同步
- 【安全测试工程师】超实用的Web渗透测试学习路线~
- 微信小程序 - 引入第三方字体(使用网络字体艺术字)
- 华为关闭系统更新EMUI9.0禁止更新mate10降级EMUI9
- nginx系列(十七)nginx下的gzip与vary、预压缩、缓存、反向代理的结合
- 【读论文-笔记】——1.沐神读Alexnet
热门文章
- 提升Visual Studio 2012的响应能力
- 对xxl-job进行simpleTrigger并动态创建任务扩展
- pythonchallenge_level9
- hive数据仓库摘录和总结
- 如何解决KEIL 5 编KEIL4同RTX系统的project解
- JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue .
- Servlet Listener
- 条件独立(conditional independence) 结合贝叶斯网络(Bayesian network) 概率有向图 (PRML8.2总结)...
- 离开域后打开Office慢 Openfiler
- 深入浅出自定义标签(一)入门