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自动登录126邮箱的方法
Jul 10 Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 Python
Python人脸识别初探
Dec 21 Python
Python中一些不为人知的基础技巧总结
May 19 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
Python如何使用argparse模块处理命令行参数
Dec 11 Python
Python with标签使用方法解析
Jan 17 Python
Python利用逻辑回归分类实现模板
Feb 15 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
Django如何在不停机的情况下创建索引
Aug 02 Python
Python下载的11种姿势(小结)
Nov 18 Python
教你使用TensorFlow2识别验证码
Jun 11 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 smarty的预保留变量总结
2008/12/04 PHP
PHP安全的URL字符串base64编码和解码
2014/06/19 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
2015/07/28 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
javascript实现文件拖拽事件
2018/03/29 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
vue2.0学习之axios的封装与vuex介绍
2018/05/28 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
Vue中keep-alive组件的深入理解
2020/08/23 Javascript
[06:45]DOTA2-DPC中国联赛 正赛 Magma vs LBZS 选手采访
2021/03/11 DOTA
Python中字符串的修改及传参详解
2016/11/30 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
以下的初始化有什么区别
2013/12/16 面试题
餐饮投资计划书
2014/04/25 职场文书
元旦趣味活动方案
2014/08/22 职场文书
2014年健康教育工作总结
2014/11/20 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
企业安全生产规章制度
2015/08/06 职场文书