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函数局部变量用法实例分析
Aug 04 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
Mar 19 Python
浅谈python中列表、字符串、字典的常用操作
Sep 19 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
Python爬取数据保存为Json格式的代码示例
Apr 09 Python
pandas实现将dataframe满足某一条件的值选出
Jun 12 Python
python3 assert 断言的使用详解 (区别于python2)
Nov 27 Python
tensorflow 实现数据类型转换
Feb 17 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
Mar 01 Python
Python3爬虫中Splash的知识总结
Jul 10 Python
Pycharm学生免费专业版安装教程的方法步骤
Sep 24 Python
Python打包为exe详细教程
May 18 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编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
如何判断php mysqli扩展类是否开启
2016/12/24 PHP
laravel使用数据库测试注意事项
2020/04/10 PHP
Prototype 工具函数 学习
2009/07/23 Javascript
HTML5之lang属性与dir属性的详解
2013/06/19 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
2016/06/23 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
原生js生成图片验证码
2020/10/11 Javascript
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
java直接调用python脚本的例子
2014/02/16 Python
Python创建xml的方法
2015/03/10 Python
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
数控专业毕业生求职信范文
2013/09/21 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
小班幼儿评语大全
2014/04/30 职场文书
行政监察建议书
2014/05/19 职场文书
群众路线自我剖析范文
2014/11/04 职场文书
纪检监察立案决定书
2015/06/24 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL