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 相关文章推荐
Tornado服务器中绑定域名、虚拟主机的方法
Aug 22 Python
Python3控制路由器——使用requests重启极路由.py
May 11 Python
Python搜索引擎实现原理和方法
Nov 27 Python
Python中pandas模块DataFrame创建方法示例
Jun 20 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
Dec 15 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
Python通过两个dataframe用for循环求笛卡尔积
Apr 29 Python
PyCharm+PyQt5+QtDesigner配置详解
Aug 12 Python
Python类型转换的魔术方法详解
Dec 23 Python
selenium携带cookies模拟登陆CSDN的实现
Jan 19 Python
python Matplotlib基础--如何添加文本和标注
Jan 26 Python
Python制作表白爱心合集
Jan 22 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 Transfer Code
2006/10/09 PHP
Linux中为php配置伪静态
2014/12/17 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
PHP自定义多进制的方法
2016/11/03 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
Div自动滚动到末尾的代码
2008/10/26 Javascript
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
jQuery自动添加表单项的方法
2015/07/13 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
jQuery属性选择器用法示例
2016/09/09 Javascript
vuejs指令详解
2017/02/07 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
vue实现简单图片上传
2020/06/30 Javascript
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
通过实例解析Python return运行原理
2020/03/04 Python
Python3爬虫里关于Splash负载均衡配置详解
2020/07/10 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
花园仓库建筑:Garden Buildings Direct
2018/02/16 全球购物
what is the difference between ext2 and ext3
2015/08/25 面试题
银行学习十八大感想
2014/01/11 职场文书
《小动物过冬》教学反思
2014/04/17 职场文书
走群众路线学习笔记
2014/11/06 职场文书
毕业生政审意见范文
2015/06/04 职场文书
班主任工作总结范文
2015/08/13 职场文书
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电