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中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 Python
跟老齐学Python之赋值,简单也不简单
Sep 24 Python
在Python中处理字符串之isdigit()方法的使用
May 18 Python
Python pickle模块用法实例分析
May 27 Python
浅析Python中return和finally共同挖的坑
Aug 18 Python
基于DATAFRAME中元素的读取与修改方法
Jun 08 Python
python并发和异步编程实例
Nov 15 Python
通过PYTHON来实现图像分割详解
Jun 26 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
django实现日志按日期分割
May 21 Python
Python基于Twilio及腾讯云实现国际国内短信接口
Jun 18 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 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
全国FM电台频率大全 - 25 云南省
2020/03/11 无线电
PHP针对多用户实现更换头像功能
2016/09/04 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
JS原型对象通俗"唱法"
2012/12/27 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
python批量处理文件或文件夹
2020/07/28 Python
python实现计算器功能
2019/10/31 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
Python实现随机爬山算法
2021/01/29 Python
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
荷兰美妆护肤品海淘网站:Beautinow(中文)
2020/11/22 全球购物
部队领导证婚词
2014/01/12 职场文书
自荐信需注意事项
2014/01/25 职场文书
xxx同志考察材料
2014/02/07 职场文书
党员倡议书
2015/01/19 职场文书
幼儿园辞职信范文
2015/02/27 职场文书
河童之夏观后感
2015/06/11 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
《云雀的心愿》教学反思
2016/02/23 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
Python面向对象之内置函数相关知识总结
2021/06/24 Python