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将图片文件转换成base64编码的方法
Mar 14 Python
Python简单网络编程示例【客户端与服务端】
May 26 Python
Python创建二维数组实例(关于list的一个小坑)
Nov 07 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
Feb 05 Python
Python Opencv实现图像轮廓识别功能
Mar 23 Python
对Python中小整数对象池和大整数对象池的使用详解
Jul 09 Python
利用Python检测URL状态
Jul 31 Python
python-序列解包(对可迭代元素的快速取值方法)
Aug 24 Python
keras 模型参数,模型保存,中间结果输出操作
Jul 06 Python
python中的错误如何查看
Jul 08 Python
python/golang 删除链表中的元素
Sep 14 Python
Pyside2中嵌入Matplotlib的绘图的实现
Feb 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 的 __FILE__ 常量
2007/01/15 PHP
利用PHP+JS实现搜索自动提示(实例)
2013/06/09 PHP
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
2014/05/10 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
几行代码轻松搞定jquery实现flash8类似的连接效果
2007/05/03 Javascript
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
jQuery验证Checkbox是否选中的代码 推荐
2011/09/04 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
基于JavaScript实现网页倒计时自动跳转代码
2015/12/28 Javascript
基于jquery实现表格内容筛选功能实例解析
2016/05/09 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
简单了解JavaScript异步
2019/05/23 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
深入解析Python中的WSGI接口
2015/05/11 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
毕业生机械建模求职信
2013/10/14 职场文书
就业协议书样本
2014/08/20 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
2015入党自传格式范文
2015/06/26 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书
一篇文章学会Vue中间件管道
2021/06/20 Vue.js
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电