python线程池threadpool使用篇


Posted in Python onApril 27, 2018

最近在做一个视频设备管理的项目,设备包括(摄像机,DVR,NVR等),包括设备信息补全,设备状态推送,设备流地址推送等,如果同时导入的设备数量较多,如果使用单线程进行设备检测,那么由于设备数量较多,会带来较大的延时,因此考虑多线程处理此问题。

可以使用python语言自己实现线程池,或者可以使用第三方包threadpool线程池包,本主题主要介绍threadpool的使用以及其里面的具体实现。

1、安装

使用安装:

pip installthreadpool

2、使用

    (1)引入threadpool模块
    (2)定义线程函数
    (3)创建线程 池threadpool.ThreadPool()
    (4)创建需要线程池处理的任务即threadpool.makeRequests()
    (5)将创建的多个任务put到线程池中,threadpool.putRequest
    (6)等到所有任务处理完毕theadpool.pool()

import threadpool 
def ThreadFun(arg1,arg2): 
 pass 
def main(): 
 device_list=[object1,object2,object3......,objectn]#需要处理的设备个数 
 task_pool=threadpool.ThreadPool(8)#8是线程池中线程的个数 
 request_list=[]#存放任务列表 
 #首先构造任务列表 
 for device in device_list: 
 request_list.append(threadpool.makeRequests(ThreadFun,[((device, ), {})])) 
 #将每个任务放到线程池中,等待线程池中线程各自读取任务,然后进行处理,使用了map函数,不了解的可以去了解一下。 
 map(task_pool.putRequest,request_list) 
 #等待所有任务处理完成,则返回,如果没有处理完,则一直阻塞 
 task_pool.poll() 
if __name__=="__main__": 
 main()

上面就是一个具体的线程池的使用流程
threadpool具体的定义如下:

class ThreadPool: 
 """A thread pool, distributing work requests and collecting results. 
 
 See the module docstring for more information. 
 
 """ 
 def __init__(self, num_workers, q_size=0, resq_size=0, poll_timeout=5): 
 pass 
 def createWorkers(self, num_workers, poll_timeout=5): 
 pass 
 def dismissWorkers(self, num_workers, do_join=False): 
 pass 
 def joinAllDismissedWorkers(self): 
 pass 
 def putRequest(self, request, block=True, timeout=None): 
 pass 
 def poll(self, block=False): 
 pass 
 def wait(self): 
 pass

下一节会详细介绍上面的整个流程以及每个函数:python 线程池threadpool(实现篇)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python从入门到精通(DAY 1)
Dec 20 Python
Python中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
简单了解Python中的几种函数
Nov 03 Python
pandas求两个表格不相交的集合方法
Dec 08 Python
Flask框架模板渲染操作简单示例
Jul 31 Python
使用PyCharm进行远程开发和调试的实现
Nov 04 Python
numpy:np.newaxis 实现将行向量转换成列向量
Nov 30 Python
python scatter函数用法实例详解
Feb 11 Python
基于python和flask实现http接口过程解析
Jun 15 Python
Python通过fnmatch模块实现文件名匹配
Sep 30 Python
Python抓包并解析json爬虫的完整实例代码
Nov 03 Python
python的列表生成式,生成器和generator对象你了解吗
Mar 16 Python
Python实现删除时保留特定文件夹和文件的示例
Apr 27 #Python
python中yaml配置文件模块的使用详解
Apr 27 #Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
Apr 27 #Python
python中subprocess批量执行linux命令
Apr 27 #Python
python复制文件到指定目录的实例
Apr 27 #Python
Python多进程multiprocessing.Pool类详解
Apr 27 #Python
python获取程序执行文件路径的方法(推荐)
Apr 26 #Python
You might like
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
超精准的javascript验证身份证号的具体实现方法
2015/11/18 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
Python解析树及树的遍历
2016/02/03 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
Python tkinter模版代码实例
2020/02/05 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
如何理解python中数字列表
2020/05/29 Python
win10安装python3.6的常见问题
2020/07/01 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
css3+伪元素实现鼠标移入时下划线向两边展开的效果
2017/04/25 HTML / CSS
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
红领巾广播站广播稿
2014/02/01 职场文书
会计与审计专业自荐信范文
2014/03/15 职场文书
留学推荐信怎么写
2015/03/26 职场文书