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 相关文章推荐
Django查询数据库的性能优化示例代码
Sep 24 Python
Python冲顶大会 快来答题!
Jan 17 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
Mar 19 Python
pandas将DataFrame的列变成行索引的方法
Apr 10 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
Python定义函数时参数有默认值问题解决
Dec 19 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
Jan 04 Python
Django admin管理工具TabularInline类用法详解
May 14 Python
Python dict的常用方法示例代码
Jun 23 Python
python如何建立全零数组
Jul 19 Python
如何利用python生成MD5并去重
Dec 07 Python
Python 统计序列中元素的出现频度
Apr 26 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
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
createElement动态创建HTML对象脚本代码
2008/11/24 Javascript
asp.net+js 实现无刷新上传解析csv文件的代码
2010/05/17 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
JS获取浏览器语言动态加载JS文件示例代码
2014/10/31 Javascript
AngularJS中的Directive实现延迟加载
2016/01/25 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
Python入门篇之字符串
2014/10/17 Python
对numpy中的transpose和swapaxes函数详解
2018/08/02 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
Python单元和文档测试实例详解
2019/04/11 Python
简单的Python调度器Schedule详解
2019/08/30 Python
python 命令行传入参数实现解析
2019/08/30 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
工程监理应届生求职信
2013/11/09 职场文书
专业技术职务聘任书
2014/03/29 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
行政助理岗位职责
2015/02/10 职场文书
摘录式读书笔记
2015/07/01 职场文书