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将html转成PDF的实现代码(包含中文)
Mar 04 Python
Python的Flask框架中实现简单的登录功能的教程
Apr 20 Python
Mac中升级Python2.7到Python3.5步骤详解
Apr 27 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
使用Python的SymPy库解决数学运算问题的方法
Mar 27 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 Python
梅尔频率倒谱系数(mfcc)及Python实现
Jun 18 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
Pyspark读取parquet数据过程解析
Mar 27 Python
Python实现RabbitMQ6种消息模型的示例代码
Mar 30 Python
Python3.8安装Pygame教程步骤详解
Aug 14 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 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获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
php实现文件预览功能
2017/05/23 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
js实现的网页颜色代码表全集
2007/07/17 Javascript
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
jquery 注意事项与常用语法小结
2010/06/07 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
angularjs学习笔记之双向数据绑定
2015/09/26 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
Python自动发邮件脚本
2017/03/31 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
浅谈django2.0 ForeignKey参数的变化
2019/08/06 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
计算机网络毕业生自荐信
2013/10/01 职场文书
邀请书格式范文
2015/02/02 职场文书
网络管理员岗位职责
2015/02/12 职场文书
MySQL锁机制
2021/04/05 MySQL
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python
Django框架中表单的用法
2022/06/10 Python