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 strip lstrip rstrip使用方法
Sep 06 Python
Python fileinput模块使用实例
May 28 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
Jul 08 Python
Python中动态检测编码chardet的使用教程
Jul 06 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
Tesserocr库的正确安装方式
Oct 19 Python
Python版名片管理系统
Nov 30 Python
python3实现往mysql中插入datetime类型的数据
Mar 02 Python
Python基于httpx模块实现发送请求
Jul 07 Python
python 如何用map()函数创建多线程任务
Apr 07 Python
python实现简单的聊天小程序
Jul 07 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自动更新新闻DIY
2006/10/09 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
PHP聊天室简单实现方法详解
2018/12/08 PHP
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
JavaScript DOM学习第六章 表单实例
2010/02/19 Javascript
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
使用Node.js处理前端代码文件的编码问题
2016/02/16 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
2020/02/10 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
Python smallseg分词用法实例分析
2015/05/28 Python
老生常谈python中的重载
2018/11/11 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
Python爬虫:将headers请求头字符串转为字典的方法
2019/08/21 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
python如何调用字典的key
2020/05/25 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
Airbnb爱彼迎官网:成为爱彼迎房东,赚取收入
2019/03/14 全球购物
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
Vrbo英国:预订度假屋
2020/08/19 全球购物
新学期开学寄语
2014/01/18 职场文书
遗愿清单观后感
2015/06/09 职场文书
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技
Android自定义双向滑动控件
2022/04/19 Java/Android