Python定时器线程池原理详解


Posted in Python onFebruary 26, 2020

这篇文章主要介绍了Python定时器线程池原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

定时器执行循环任务:

知识储备

Timer(interval, function, args=None, kwargs=None)

interval ===》 时间间隔 单位为s

function ===》 定制执行的函数

使用threading的 Timer 类

start() 为通用的开始执行方法

cancel ()为取消执行的方法

普通单次定时执行

from threading import Timer
import time
# 普通单次定时器
def handle():
print("普通单次定时器 函数被执行");
t1=Timer(interval=1,function=handle);
t1.start();

定时循环执行

from threading import Timer
import time
# 循环定时器
def loop_handle():
print("循环定时器定时器 函数被执行");
global t2;
t2=Timer(interval=1,function=loop_handle);
t2.start();
 
t2=Timer(interval=1,function=loop_handle);
t2.start();
 
time.sleep(5);# 对主线程停止5s;
t2.cancel(); # t2 在主main 线程阻塞5s t2执行5s

线程池技术

基本概念

在程序启动时就创建好若干个线程,并保存到内存中 。 当线程启动并执行完成之后,并不做销毁处理,而是等待下次再使用。

i:节约了创建进程 销毁进程的时间,大大降低进程的开销

实现

抢占式:线程池中的线程执行顺序不固定。该方式使用 ThreadPoolExecutor的 submit ()方法实现。

具体执行那个线程是随机的, 并且执行的函数也可以不一致

那个线程执行的函数出现了崩溃,不影响整个线程池的其他线程的运行

使用with 语法 进行简化操作

非抢占式:线程将按照调用的顺序执行 。 此方式使用 ThreadPoolExecutor 的 map ()方法来实现

每个线程处理的函数都是一致的,一个线程执行的函数崩溃,整体就崩溃

基本code

from concurrent.futures import ThreadPoolExecutor # 导入线程池
import time
def printName(name):
print("名字",name);
time.sleep(2);
nameList=['Tom','jirl','steam'];
# 抢占式线程池
start2=time.time();
with ThreadPoolExecutor(3) as executor:
for i in nameList:# 因为每次执行的函数不一致,所以参数要分开传递
executor.submit(printName,i); 
end2=time.time();
print("2 speed:",str(end2-start2));
#非抢占式线程池

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现对PPT文件进行截图操作的方法
Apr 28 Python
Python正则表达式教程之一:基础篇
Mar 02 Python
TensorFlow高效读取数据的方法示例
Feb 06 Python
Python之读取TXT文件的方法小结
Apr 27 Python
解决DataFrame排序sort的问题
Jun 07 Python
Python微医挂号网医生数据抓取
Jan 24 Python
Python嵌套式数据结构实例浅析
Mar 05 Python
详解Python self 参数
Aug 30 Python
Python面向对象原理与基础语法详解
Jan 02 Python
python thrift 实现 单端口多服务的过程
Jun 08 Python
pytorch 多分类问题,计算百分比操作
Jul 09 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
Jan 13 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
Feb 26 #Python
Python列表解析操作实例总结
Feb 26 #Python
Python图像处理库PIL的ImageFilter模块使用介绍
Feb 26 #Python
python实现低通滤波器代码
Feb 26 #Python
Python解释器及PyCharm工具安装过程
Feb 26 #Python
Python基础之列表常见操作经典实例详解
Feb 26 #Python
Python TKinter如何自动关闭主窗口
Feb 26 #Python
You might like
php过滤危险html代码
2008/08/18 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
yii实现CheckBox复选框在同一行显示的方法
2014/12/03 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
JQuery开发的数独游戏代码
2010/10/29 Javascript
JavaScript中的类继承
2010/11/25 Javascript
33个优秀的jQuery 教程分享(幻灯片、动画菜单)
2011/07/08 Javascript
怎样在JavaScript里写一个swing把数据插入数据库
2012/12/10 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
2019/05/22 Javascript
vue-cli3项目展示本地Markdown文件的方法
2019/06/07 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
Python读取网页内容的方法
2015/07/30 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
python 定义给定初值或长度的list方法
2018/06/23 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
pytorch中index_select()的用法详解
2021/01/06 Python
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
HTML5中的websocket实现直播功能
2018/05/21 HTML / CSS
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
行政部经理助理岗位职责
2014/06/15 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
暂住证明怎么写
2015/06/19 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
严以用权学习心得体会
2016/01/12 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL