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 break语句详解
Mar 11 Python
python利用正则表达式排除集合中字符的功能示例
Oct 10 Python
python引入不同文件夹下的自定义模块方法
Oct 27 Python
对Python3中dict.keys()转换成list类型的方法详解
Feb 03 Python
浅谈Python反射 & 单例模式
Mar 21 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
解决Python使用列表副本的问题
Dec 19 Python
Python3如何在Windows和Linux上打包
Feb 25 Python
python实现UDP协议下的文件传输
Mar 20 Python
Python Pandas模块实现数据的统计分析的方法
Jun 24 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程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
浅谈JS闭包中的循环绑定处理程序
2014/11/09 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
Angular(5.2->6.1)升级小结
2018/12/27 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
Python datetime时间格式化去掉前导0
2014/07/31 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
python实现批量图片格式转换
2020/06/16 Python
Python实现图片拼接的代码
2018/07/02 Python
python中字符串内置函数的用法总结
2018/09/13 Python
使用numba对Python运算加速的方法
2018/10/15 Python
python3.6实现学生信息管理系统
2019/02/21 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
Python实现名片管理系统
2020/02/14 Python
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
日语专业毕业生自荐信
2013/11/11 职场文书
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
甜品店的创业计划书范文
2014/01/02 职场文书
鼓励运动员的广播稿
2014/02/08 职场文书
教师节感谢信
2015/01/22 职场文书
家装业务员岗位职责
2015/04/03 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python