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 除法小技巧
Sep 06 Python
python的random模块及加权随机算法的python实现方法
Jan 04 Python
Python中标准模块importlib详解
Apr 16 Python
python mysql断开重连的实现方法
Jul 26 Python
Python利用requests模块下载图片实例代码
Aug 12 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
Aug 30 Python
Django Admin后台添加数据库视图过程解析
Apr 01 Python
详解python中groupby函数通俗易懂
May 14 Python
Python实现将元组中的元素作为参数传入函数的操作
Jun 05 Python
简单了解Python多态与属性运行原理
Jun 15 Python
详解pandas映射与数据转换
Jan 22 Python
python 学习GCN图卷积神经网络
May 11 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
PHP插入排序实现代码
2013/04/04 PHP
分享PHP header函数使用教程
2013/09/05 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
分享10段PHP常用代码
2015/11/11 PHP
javascript css styleFloat和cssFloat
2010/03/15 Javascript
JavaScript 数组运用实现代码
2010/04/13 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
javascript实现表单提交后,提交按钮不可用的方法
2015/04/18 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
详解搭建es6+devServer简单开发环境
2018/09/25 Javascript
原生JS实现音乐播放器的示例代码
2021/02/25 Javascript
Windows安装Python、pip、easy_install的方法
2017/03/05 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
pandas series序列转化为星期几的实例
2018/04/11 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
深入浅析python的第三方库pandas
2020/02/13 Python
使用pygame编写Flappy bird小游戏
2020/03/14 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
Myprotein丹麦官网:欧洲第一运动营养品牌
2019/04/15 全球购物
食堂采购员岗位职责
2014/03/17 职场文书
公开服务承诺制度
2014/03/26 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
婚前协议书范本
2014/10/27 职场文书
四风之害观后感
2015/06/09 职场文书
请病假条范文
2015/08/17 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL
正则表达式拆分url实例代码
2022/02/24 Java/Android