python线程池(threadpool)模块使用python2.7
一、安装与简介
pip install threadpool
pool = ThreadPool(poolsize) requests = makeRequests(some_callable, list_of_args, callback) [pool.putRequest(req) for req in requests] pool.wait()
第一行定义了一个线程池,表示最多可以创建poolsize这么多线程;
第二行是调用makeRequests创建了要开启多线程的函数,以及函数相关参数和回调函数,其中回调函数可以不写,default是无,也就是说makeRequests只需要2个参数就可以运行;
第三行用法比较奇怪,是将所有要运行多线程的请求扔进线程池,[pool.putRequest(req) for req in requests]等同于
for req in requests:
pool.putRequest(req)
第四行是等待所有的线程完成工作后退出。
二、代码实例
import time def sayhello(str):print "Hello ",strtime.sleep(2)name_list =['xiaozi','aa','bb','cc'] start_time = time.time() for i in range(len(name_list)):sayhello(name_list[i]) print '%d second'% (time.time()-start_time)
改用线程池代码,花费时间更少,更效率
import time import threadpool def sayhello(str):print "Hello ",strtime.sleep(2)name_list =['xiaozi','aa','bb','cc'] start_time = time.time() pool = threadpool.ThreadPool(10) requests = threadpool.makeRequests(sayhello, name_list) [pool.putRequest(req) for req in requests] pool.wait() print '%d second'% (time.time()-start_time)
当函数有多个参数的情况,函数调用时第一个解包list,第二个解包dict,所以可以这样:
def hello(m, n, o):""""""print "m = %s, n = %s, o = %s"%(m, n, o)if __name__ == '__main__':# 方法1 lst_vars_1 = ['1', '2', '3']lst_vars_2 = ['4', '5', '6']func_var = [(lst_vars_1, None), (lst_vars_2, None)]# 方法2dict_vars_1 = {'m':'1', 'n':'2', 'o':'3'}dict_vars_2 = {'m':'4', 'n':'5', 'o':'6'}func_var = [(None, dict_vars_1), (None, dict_vars_2)] pool = threadpool.ThreadPool(2)requests = threadpool.makeRequests(hello, func_var)[pool.putRequest(req) for req in requests]pool.wait()
需要把所传入的参数进行转换,然后带人线程池。
def getuserdic():username_list=['xiaozi','administrator']password_list=['root','','abc123!','123456','password','root']userlist = []for username in username_list:user =username.rstrip()for password in password_list:pwd = password.rstrip()userdic ={}userdic['user']=useruserdic['pwd'] = pwdtmp=(None,userdic)userlist.append(tmp)return userlist
python线程池(threadpool)模块使用python2.7相关推荐
- python线程池(threadpool)模块使用笔记详解
这篇文章主要介绍了python线程池(threadpool)模块使用笔记详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 最近在做一个视频设备管理的项目,设备包括(摄像 ...
- python线程池模块_python并发编程之进程池,线程池,协程
需要注意一下 不能无限的开进程,不能无限的开线程 最常用的就是开进程池,开线程池.其中回调函数非常重要 回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去 ...
- python线程池模块_python并发编程之进程池,线程池,协程(Python标准模块--concurrent.futures(并发未来))...
需要注意一下 不能无限的开进程,不能无限的开线程 最常用的就是开进程池,开线程池.其中回调函数非常重要 回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去 ...
- Python线程池的使用方法
线程池的作用 线程池实现 线程池的作用 线程池在系统启动时即创建大量空闲的线程,程序只要将一个函数提交给线程池,线程池就会启动一个空闲的线程来执行它.当该函数执行结束后,该线程并不会死亡,而是再次返回 ...
- Python 线程池 ThreadPoolExecutor(二) - Python零基础入门教程
目录 一.Python 线程池前言 二.Python 线程池 ThreadPoolExecutor 常用函数 1.线程池 as_completed 函数使用 2.线程池 map 函数使用 3.线程池 ...
- Python线程池与进程池
Python线程池与进程池 前言 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识 ...
- python线程池使用和问题记录
记录一次使用多线程的问题 背景 最近工作有个需求根据文件中的数据请求中台服务,然后解析返回值.文件中每行代表一个参数,使用post方式携带参数请求中台接口. 分析:需要处理的数据量非常大(近200w行 ...
- Python 线程池 ThreadPoolExecutor(一) - Python零基础入门教程
目录 一.Python 线程池前言 二.Python 线程池原理 三.Python 线程池 ThreadPoolExecutor 函数介绍 四.Python 线程池 ThreadPoolExecuto ...
- python线程池原理及使用
python线程池及其原理和使用 系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互.在这种情形下,使用线程池可以很好地提升性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑 ...
- python 线程池 concurrent.futures ThreadPoolExecutor
python 线程池 concurrent.futures ThreadPoolExecutor 步骤: 1,导包from concurrent.futures import ThreadPoolEx ...
最新文章
- linux ftp perl上传脚本
- R卡方检验(CHI-SQUARE TEST)
- IntelliJ IDEA(2017)安装和破解
- perl学习之:localtime
- qdir 类似工具_qdir 类似工具_支持 Win8.1,全能资源管理器 Q-Dir 5.74 发布
- d3 + geojson in node
- 微pe添加网络组件_Nature子刊 | 微塑料影响微生物群落和氮循环
- Linux 系统中用户切换(su user与 su - user 的区别)
- 用Python写个魂斗罗,另附30个Python小游戏源码
- 智能AI机器人源码,电话机器人源码和系统部署运行环境freeswitch
- 动易模板制作示例(一)
- dict后缀_词根词缀法记单词之dict
- 2020年全年财报稳健高增长,除了赛道利好之外微盟是如何做到的?
- AR可视化远程协助,医护诊疗,对讲指挥调度系统方案
- 元宇宙也“炒房”?多个二手交易网站屏蔽元宇宙关键词
- php 网页手册模板,网站表单模板
- cross-site tracing XST攻击
- PC程序(Electron)开发如何注入Cookie
- CRT串口工具使用方法2022.08.11
- java的中文乱码转换
热门文章
- 分销商邀约代充值的阿里云国际站账户怎么设置CC防护
- 企业要实现用计算机完成存货管理,企业要实现用计算机完成存货管理,首先要通过()将基本数据输入计算机。...
- MySQL5.7 Linux下单机部署
- UG开发实战001:UG8.5安装图文详解(加工环境齐全)
- 转载: PostgreSQL SQL的性能调试方法2--数据库log分析
- 基于MFC的简易登录器
- Python3 教你如何写一个登录器
- 猜拳小游戏——耗时好长要疯了
- MFC按钮为灰色或按钮链接的窗口重复
- java图形界面多线程_多线程编程、Java I/O系统和Java图形界面编程