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中的继承和多态的概念
Apr 27 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
Dec 08 Python
Python实现TCP协议下的端口映射功能的脚本程序示例
Jun 14 Python
python3爬取淘宝信息代码分析
Feb 10 Python
python实现微信小程序自动回复
Sep 10 Python
python钉钉机器人运维脚本监控实例
Feb 20 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
May 08 Python
通过cmd进入python的实例操作
Jun 26 Python
学习和使用python的13个理由
Jul 30 Python
PyQt5中多线程模块QThread使用方法的实现
Jan 31 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
Jan 05 Python
OpenCV项目实践之停车场车位实时检测
Apr 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
长波知识介绍
2021/03/01 无线电
深入PHP curl参数的详解
2013/06/17 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
2014/06/12 PHP
php实现插入排序
2015/03/29 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
JavaScript中的类与实例实现方法
2015/01/23 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
vue的基本用法与常见指令
2017/08/15 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
django中的HTML控件及参数传递方法
2018/03/20 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
python 画函数曲线示例
2019/12/04 Python
matplotlib 三维图表绘制方法简介
2020/09/20 Python
苏宁红孩子母婴商城:redbaby
2017/02/12 全球购物
总经理助理岗位职责
2013/11/08 职场文书
投标单位介绍信
2014/01/09 职场文书
中班开学寄语
2014/04/04 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers