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类属性与实例属性用法分析
May 09 Python
python的else子句使用指南
Feb 27 Python
python爬虫实战之爬取京东商城实例教程
Apr 24 Python
python写一个md5解密器示例
Feb 23 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
Python K最近邻从原理到实现的方法
Aug 15 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
Python类和实例的属性机制原理详解
Mar 21 Python
python3.7+selenium模拟淘宝登录功能的实现
May 26 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 Python
PyQt5结合QtDesigner实现文本框读写操作
Jun 11 Python
python游戏开发Pygame框架
Apr 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和MySql中计算时间差的方法
2011/04/22 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
PHP7多线程搭建教程
2017/04/21 PHP
索趣科技的答案
2007/02/07 Javascript
js表数据排序 sort table data
2009/02/18 Javascript
11款新鲜的jQuery插件[附所有demo下载]
2011/01/24 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
JS实现div居中示例
2014/04/17 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
JavaScript驾驭网页-DOM
2016/03/24 Javascript
JavaScript获取URL中参数querystring的方法详解
2016/10/11 Javascript
jquery操作ID带有变量的节点实例
2016/12/07 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
从0到1构建vueSSR项目之路由的构建
2019/03/07 Javascript
对numpy中的数组条件筛选功能详解
2018/07/02 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
英国、欧洲和全球租车服务:Avis英国
2016/08/29 全球购物
八年级历史教学反思
2014/01/10 职场文书
企业公益活动策划方案
2014/08/24 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
2015年售票员工作总结
2015/04/29 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
全陪导游词开场白
2015/05/29 职场文书
护士医德医风心得体会
2016/01/25 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
Java版 简易五子棋小游戏
2022/05/04 Java/Android