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 Web框架Flask中使用新浪SAE云存储实例
Feb 08 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
Python实现判断一个字符串是否包含子串的方法总结
Nov 21 Python
python爬虫获取京东手机图片的图文教程
Dec 29 Python
python更改已存在excel文件的方法
May 03 Python
Python实现的读写json文件功能示例
Jun 05 Python
python用线性回归预测股票价格的实现代码
Sep 04 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
May 26 Python
QML用PathView实现轮播图
Jun 03 Python
利用Python实现Excel的文件间的数据匹配功能
Jun 16 Python
python 检测图片是否有马赛克
Dec 01 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分页显示制作详细讲解
2006/10/09 PHP
php获取post中的json数据的实现方法
2011/06/08 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
PHP 微信支付类 demo
2015/11/30 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
js注意img图片的onerror事件的分析
2011/01/01 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
js读取本地文件的实例
2017/12/22 Javascript
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
Django model反向关联名称的方法
2018/12/15 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
贝佳斯官方网站:Borghese
2020/05/08 全球购物
国家励志奖学金获奖感言
2014/01/09 职场文书
咖啡书吧创业计划书
2014/01/13 职场文书
人力资源作业细则
2014/03/03 职场文书
绿色环保口号
2014/06/12 职场文书
有关九一八事变的演讲稿
2014/09/14 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书