一、安装与简介

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相关推荐

  1. python线程池(threadpool)模块使用笔记详解

    这篇文章主要介绍了python线程池(threadpool)模块使用笔记详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 最近在做一个视频设备管理的项目,设备包括(摄像 ...

  2. python线程池模块_python并发编程之进程池,线程池,协程

    需要注意一下 不能无限的开进程,不能无限的开线程 最常用的就是开进程池,开线程池.其中回调函数非常重要 回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去 ...

  3. python线程池模块_python并发编程之进程池,线程池,协程(Python标准模块--concurrent.futures(并发未来))...

    需要注意一下 不能无限的开进程,不能无限的开线程 最常用的就是开进程池,开线程池.其中回调函数非常重要 回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去 ...

  4. Python线程池的使用方法

    线程池的作用 线程池实现 线程池的作用 线程池在系统启动时即创建大量空闲的线程,程序只要将一个函数提交给线程池,线程池就会启动一个空闲的线程来执行它.当该函数执行结束后,该线程并不会死亡,而是再次返回 ...

  5. Python 线程池 ThreadPoolExecutor(二) - Python零基础入门教程

    目录 一.Python 线程池前言 二.Python 线程池 ThreadPoolExecutor 常用函数 1.线程池 as_completed 函数使用 2.线程池 map 函数使用 3.线程池 ...

  6. Python线程池与进程池

    Python线程池与进程池 前言 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识 ...

  7. python线程池使用和问题记录

    记录一次使用多线程的问题 背景 最近工作有个需求根据文件中的数据请求中台服务,然后解析返回值.文件中每行代表一个参数,使用post方式携带参数请求中台接口. 分析:需要处理的数据量非常大(近200w行 ...

  8. Python 线程池 ThreadPoolExecutor(一) - Python零基础入门教程

    目录 一.Python 线程池前言 二.Python 线程池原理 三.Python 线程池 ThreadPoolExecutor 函数介绍 四.Python 线程池 ThreadPoolExecuto ...

  9. python线程池原理及使用

    python线程池及其原理和使用 系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互.在这种情形下,使用线程池可以很好地提升性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑 ...

  10. python 线程池 concurrent.futures ThreadPoolExecutor

    python 线程池 concurrent.futures ThreadPoolExecutor 步骤: 1,导包from concurrent.futures import ThreadPoolEx ...

最新文章

  1. linux ftp perl上传脚本
  2. R卡方检验(CHI-SQUARE TEST)
  3. IntelliJ IDEA(2017)安装和破解
  4. perl学习之:localtime
  5. qdir 类似工具_qdir 类似工具_支持 Win8.1,全能资源管理器 Q-Dir 5.74 发布
  6. d3 + geojson in node
  7. 微pe添加网络组件_Nature子刊 | 微塑料影响微生物群落和氮循环
  8. Linux 系统中用户切换(su user与 su - user 的区别)
  9. 用Python写个魂斗罗,另附30个Python小游戏源码
  10. 智能AI机器人源码,电话机器人源码和系统部署运行环境freeswitch
  11. 动易模板制作示例(一)
  12. dict后缀_词根词缀法记单词之dict
  13. 2020年全年财报稳健高增长,除了赛道利好之外微盟是如何做到的?
  14. AR可视化远程协助,医护诊疗,对讲指挥调度系统方案
  15. 元宇宙也“炒房”?多个二手交易网站屏蔽元宇宙关键词
  16. php 网页手册模板,网站表单模板
  17. cross-site tracing XST攻击
  18. PC程序(Electron)开发如何注入Cookie
  19. CRT串口工具使用方法2022.08.11
  20. java的中文乱码转换

热门文章

  1. 分销商邀约代充值的阿里云国际站账户怎么设置CC防护
  2. 企业要实现用计算机完成存货管理,企业要实现用计算机完成存货管理,首先要通过()将基本数据输入计算机。...
  3. MySQL5.7 Linux下单机部署
  4. UG开发实战001:UG8.5安装图文详解(加工环境齐全)
  5. 转载: PostgreSQL SQL的性能调试方法2--数据库log分析
  6. 基于MFC的简易登录器
  7. Python3 教你如何写一个登录器
  8. 猜拳小游戏——耗时好长要疯了
  9. MFC按钮为灰色或按钮链接的窗口重复
  10. java图形界面多线程_多线程编程、Java I/O系统和Java图形界面编程