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中的FTP通信模块ftplib的用法整理
Jul 08 Python
Python编程之变量赋值操作实例分析
Jul 24 Python
浅析python协程相关概念
Jan 20 Python
Python中pillow知识点学习
Apr 30 Python
对python中的xlsxwriter库简单分析
May 04 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
Jan 04 Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 Python
python学习将数据写入文件并保存方法
Jun 07 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添加MySQL数据记录代码
2008/06/07 PHP
php cli 方式 在crotab中运行解决
2010/02/08 PHP
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
简单理解PHP的面向对象编程方式
2016/05/17 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
[原创]图片分页查看
2006/08/28 Javascript
js一组验证函数
2008/12/20 Javascript
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
JavaScript toFixed() 方法
2010/04/15 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
python集合用法实例分析
2015/05/30 Python
python开发简易版在线音乐播放器
2017/03/03 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
python使用turtle库绘制树
2018/06/25 Python
python numpy存取文件的方式
2020/04/01 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
python中if及if-else如何使用
2020/06/02 Python
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
医药代表个人求职信范本
2013/12/19 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
诚信承诺书模板
2014/05/26 职场文书
2014年度培训工作总结
2014/11/27 职场文书
家长对孩子的寄语
2015/02/26 职场文书
我的中国梦主题班会
2015/08/14 职场文书
python如何读取.mtx文件
2021/04/22 Python