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单链表实现代码实例
Nov 21 Python
使用Python实现下载网易云音乐的高清MV
Mar 16 Python
Python中的面向对象编程详解(下)
Apr 13 Python
Python远程桌面协议RDPY安装使用介绍
Apr 15 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
May 27 Python
一文秒懂python读写csv xml json文件各种骚操作
Jul 04 Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 Python
Pytorch Tensor基本数学运算详解
Dec 30 Python
在PyCharm中实现添加快捷模块
Feb 12 Python
python实现井字棋小游戏
Mar 04 Python
Python selenium如何打包静态网页并下载
Aug 12 Python
解决pytorch 保存模型遇到的问题
Mar 03 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在字符串中查找另一个字符串
2008/11/19 PHP
php统计文章排行示例
2014/03/04 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
RSA实现JS前端加密与PHP后端解密功能示例
2019/08/05 PHP
动手学习无线电
2021/03/10 无线电
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
jQuery父级以及同级元素查找介绍
2013/09/04 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
Three.js开发实现3D地图的实践过程总结
2017/11/20 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
Python中的两个内置模块介绍
2015/04/05 Python
深入理解Python中的super()方法
2017/11/20 Python
mac下如何将python2.7改为python3
2018/07/13 Python
Linux下多个Python版本安装教程
2018/08/15 Python
Python中捕获键盘的方式详解
2019/03/28 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
前台领班岗位职责
2013/12/04 职场文书
班组安全员工作职责
2014/02/01 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
总经理任命书范本
2014/06/05 职场文书
教师三严三实学习心得体会
2014/10/11 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技