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 相关文章推荐
windows系统下Python环境的搭建(Aptana Studio)
Mar 06 Python
Python安装模块的常见问题及解决方法
Feb 05 Python
python中logging包的使用总结
Feb 28 Python
对python3中pathlib库的Path类的使用详解
Oct 14 Python
Python3 实现串口两进程同时读写
Jun 12 Python
python每天定时运行某程序代码
Aug 16 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
Jan 08 Python
Python中常见的数制转换有哪些
May 27 Python
Python 分布式缓存之Reids数据类型操作详解
Jun 24 Python
Python实现扫码工具的示例代码
Oct 09 Python
python 用opencv实现图像修复和图像金字塔
Nov 27 Python
python实现发送邮件
Mar 02 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 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
php实现点击可刷新验证码
2015/11/07 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
php单链表实现代码分享
2016/07/04 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
JQuery写动态树示例代码
2013/07/31 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
js倒计时小程序
2013/11/05 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
jQuery中parents()方法用法实例
2015/01/07 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
微信小程序使用map组件实现解析经纬度功能示例
2019/01/22 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
python文件和目录操作函数小结
2014/07/11 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
3分钟学会一个Python小技巧
2018/11/23 Python
Centos7 下安装最新的python3.8
2019/10/28 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
学校领导班子对照检查材料
2014/09/24 职场文书
教师个人学习总结
2015/02/11 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书
java executor包参数处理功能 
2022/02/15 Java/Android