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使用wmi模块获取windows下硬盘信息的方法
May 15 Python
Python基础教程之正则表达式基本语法以及re模块
Mar 25 Python
Python简单遍历字典及删除元素的方法
Sep 18 Python
老生常谈Python序列化和反序列化
Jun 28 Python
Python中pandas模块DataFrame创建方法示例
Jun 20 Python
python生成密码字典的方法
Jul 06 Python
pycharm 在windows上编辑代码用linux执行配置的方法
Oct 27 Python
深入解析python中的实例方法、类方法和静态方法
Mar 11 Python
使用Python正则表达式操作文本数据的方法
May 14 Python
记录Python脚本的运行日志的方法
Jun 05 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
Jun 06 Python
python获取命令行参数实例方法讲解
Nov 02 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水印
2007/03/16 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
PHP之密码加密的几种方式
2015/07/29 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
javascript实现弹幕墙效果
2019/11/28 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
Python读写/追加excel文件Demo分享
2018/05/03 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
澳大利亚家具商店:Freedom
2020/12/17 全球购物
数据员岗位职责
2013/11/19 职场文书
安全演讲稿开场白
2014/08/25 职场文书
保卫工作个人总结
2015/03/03 职场文书
大专护理专业自荐信
2015/03/25 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
Oracle中DBLink的详细介绍
2022/04/29 Oracle