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中使用partial改变方法默认参数实例
Apr 28 Python
详解使用python crontab设置linux定时任务
Dec 08 Python
详解Python进程间通信之命名管道
Aug 28 Python
Python工程师面试必备25条知识点
Jan 17 Python
对numpy中的where方法嵌套使用详解
Oct 31 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
May 15 Python
Python进阶:生成器 懒人版本的迭代器详解
Jun 29 Python
python并发编程多进程 互斥锁原理解析
Aug 20 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
python读取文件指定行内容实例讲解
Mar 02 Python
Django返回HTML文件的实现方法
Sep 17 Python
PyTorch 如何检查模型梯度是否可导
Jun 05 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 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
jquery 选择器部分整理
2009/10/28 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
解决vue页面刷新或者后退参数丢失的问题
2018/03/13 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
浅析JS中回调函数及用法
2018/07/25 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
2020/09/09 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
2020/09/24 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
python中字符串类型json操作的注意事项
2017/05/02 Python
Python读取视频的两种方法(imageio和cv2)
2018/04/15 Python
python format 格式化输出方法
2018/07/16 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
Python中的引用知识点总结
2019/05/20 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
毕业生精彩的自我评价分享
2013/10/06 职场文书
安全保证书范文
2014/04/29 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
话题作文之财富(600字)
2019/12/03 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python
win7配置本地ftp服务器的图文教程
2022/08/05 Servers