python线程池(threadpool)模块使用笔记

一、安装与简介

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 ",str time.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 ",str
    time.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)]
    # 方法2
    dict_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']=user
            userdic['pwd'] = pwd
            tmp=(None,userdic)
            userlist.append(tmp)
    return userlist

 最后

欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。 

 

 

转载于:https://www.cnblogs.com/xiaozi/p/6182990.html

【WorkBuddy专栏39】零基础也能做小程序——WorkBuddy微信小程序开发完全指南 阅读详情

相关推荐

langchain4j+milvus实战

本文主要研究一下如何使用langchain4j来对接向量数据库milvus。

go4it 1472

Glib学习(12) 线程池 Thread Pools

glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/ glib帮助文档:https://developer.gnome.org/glib/ 首先将翻译贴上 描述 有时候,你希望异步分出工作的执行,并继续在你自己的线程中工作。如果这种情况经常发生,每次启动和销毁线程的开销可能太高。在这种情况下,重用已经启动的线程似乎是一个好主意。确实

andylauren的专栏 7234

SSTI模板注入及绕过姿势(基于Python-Jinja2)

http://xmctf.top:8962/?name={{%22%22[%22\x5f\x5fclass\x5f\x5f%22]["\x5F\x5Fbase\x5F\x5F"]["\x5F\x5Fsubclasses\x5F\x5F"]()[233]["\x5F\x5Finit\x5F\x5F"]["\x5F\x5Fglobals\x5F\x5F"]["\x5F\x5Fbuiltins\x5F\x5F"]['eval']("\x5F\x5Fimport\x5F\x5F('os'))")}}

Y4tacker的博客 1万+

一个Python的‘Threadpool’包中的“巨坑”

Python ThreadPool 坑

wudifengz的博客 6404

RV1126平台librga图像旋转裁剪实战

本文详细介绍了在rv1126平台上使用librga库实现图像旋转和裁剪的方法。首先解释了librga的基本概念和关键对象,包括源图像、目标图像和操作参数。随后分步骤说明了初始化设置、缓冲区创建、裁剪区域定义(通过坐标和尺寸参数)以及旋转操作(支持常见角度)。提供了完整的示例代码演示如何组合裁剪和旋转操作,并强调了性能优化、错误处理、格式支持等注意事项。通过硬件加速的librga,可以在rv1126平台上高效完成图像处理任务。

hwmxrhx的博客 1543

STM32 HAL库串口DMA接收不定长数据的两种实战方法:IDLE中断与超时管理详解

本文详细解析了STM32 HAL库中串口DMA接收不定长数据的两种实战方法:IDLE中断与超时管理。通过对比分析两种方案的硬件要求、响应速度和适用场景,为嵌入式开发者提供了高效可靠的串口通信解决方案,特别适用于智能家居、传感器网络等需要处理不定长数据包的应用场景。

weixin_30954265的博客 471

python 添加 threadpool

p”尚未安装。  您可以使用以下命令安装:              sudo apt-get install python-pip   再使用pip 安装  threadpool                sudo pip install threadpool   也可以直接下载 threadpool  包,下载之后可以看到setup.py 文件 ,执行安装,但是setup.py  有可能依赖其他的软件包,所有还是使用pip方便!

843

E-SMILES:化学信息学中的分子表示革命与应用

分子表示是化学信息学和计算化学的基础技术,其核心是将复杂的分子结构转化为计算机可处理的数字化形式。传统SMILES格式虽然广泛应用,但在处理复杂化学体系时存在局限性。Extended SMILES(E-SMILES)通过扩展语法规则,支持立体化学、配位键等特殊结构的精确描述,显著提升了分子表示的准确性和适用范围。在药物研发中,E-SMILES能准确描述蛋白质-配体相互作用和共价抑制剂;在材料科学领域,它支持纳米材料和超分子体系的多尺度建模。结合机器学习等前沿技术,E-SMILES正在推动化学信息处理效率的革

weixin_28683165的博客 279

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

这篇文章主要介绍了python线程池(threadpool)模块使用笔记详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 最近在做一个视频设备管理的项目,设备包括(摄像机,DVR,NVR等),包括设备信息补全,设备状态推送,设备流地址推送等,如果同时导入的设备数量较多,如果使用单线程进行设备检测,那么由于设备数量较多,会带来较大的延时,因此考虑多线程处理此问题。 文...

python多线程基础教程进阶教程 6650

英雄联盟(MOBA)完整制作教程

这是一份从零到上线、可落地的 LOL 风格 MOBA 游戏开发全流程教程,覆盖策划、美术、程序、测试、运营全环节,适合独立团队或学习参考。

qq_35779316的博客 537

RK3588开发笔记-PCIE接口2.5G网卡RTL8125调试记录

在RK3588平台上调试2.5G网卡(Realtek RTL8125)时,我们会用到PCIE接口,这篇文章记录了从硬件连接、内核驱动到最终实现网络通信的整个调试过程,包括可能遇到的问题和解决方案。Realtek RTL8125是为高带宽需求设计的一款高性价比2.5G以太网控制器。它不仅提供了高达2.5Gbps的网络传输速率,还具备良好的节能特性、硬件卸载引擎和广泛的操作系统支持。无论是在家庭网络、企业NAS,还是游戏和云计算等场景中,RTL8125都能为用户提供更快速、更稳定的网络连接。

flypig has a dream! 3679

python线程池模块_python线程池(threadpool)模块使用笔记

一、安装与简介pip install threadpoolpool = ThreadPool(poolsize)requests = makeRequests(some_callable, list_of_args, callback)[pool.putRequest(req) for req in requests]pool.wait()第一行定义了一个线程池,表示最多可以创建poolsize这...

weixin_39863155的博客 194

Ubuntu零基础教学-如何把Ubuntu20.04界面从英文修改为中文?| 超级详细,建议收藏

带你如何把Ubuntu20.04界面从英文修改为中文?| 超级详细,建议收藏

**My Coding Family** 5338

python 线程池_python线程池(threadpool)模块使用笔记

一、安装与简介pip install threadpoolpool =ThreadPool(poolsize)requests=makeRequests(some_callable, list_of_args, callback)[pool.putRequest(req)for req inrequests]pool.wait()第一行定义了一个线程池,表示最多可以创建poolsize这么多线程;...

weixin_39639622的博客 226

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python线程池传入多个参数_python线程池(threadpool)模块使用笔记详解

最近在做一个视频设备管理的项目,设备包括(摄像机,DVR,NVR等),包括设备信息补全,设备状态推送,设备流地址推送等,如果同时导入的设备数量较多,如果使用单线程进行设备检测,那么由于设备数量较多,会带来较大的延时,因此考虑多线程处理此问题。可以使用python语言自己实现线程池,或者可以使用第三方包threadpool线程池包,本主题主要介绍threadpool的使用以及其里面的具体实现。一、安...

weixin_39572972的博客 1512

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

最近在做一个视频设备管理的项目,设备包括(摄像机,DVR,NVR等),包括设备信息补全,设备状态推送,设备流地址推送等,如果同时导入的设备数量较多,如果使用单线程进行设备检测,那么由于设备数量较多,会带来较大的延时,因此考虑多线程处理此问题。可以使用python语言自己实现线程池,或者可以使用第三方包threadpool线程池包,本主题主要介绍threadpool的使用以及其里面的具体实现。一、安...

weixin_39661353的博客 297

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python线程池模块第三方包_python线程池(threadpool)模块使用笔记详解

最近在做一个视频设备管理的项目,设备包括(摄像机,DVR,NVR等),包括设备信息补全,设备状态推送,设备流地址推送等,如果同时导入的设备数量较多,如果使用单线程进行设备检测,那么由于设备数量较多,会带来较大的延时,因此考虑多线程处理此问题。可以使用python语言自己实现线程池,或者可以使用第三方包threadpool线程池包,本主题主要介绍threadpool的使用以及其里面的具体实现。一、安...

weixin_32556315的博客 865

python线程池模块第三方包_python线程池(threadpool)模块使用笔记-阿里云开发者社区...

一、安装与简介pip install threadpoolpool =ThreadPool(poolsize)requests=makeRequests(some_callable, list_of_args, callback)[pool.putRequest(req)for req inrequests]pool.wait()第一行定义了一个线程池,表示最多可以创建poolsize这么多线程;...

weixin_30733115的博客 185

python线程池threadpool

今天在学习python进程与线程时,无意间发现了线程池threadpool模块 模块使用非常简单,前提是得需要熟悉线程池的工作原理。 我们知道系统处理任务时,需要为每个请求创建和销毁对象。当有大量并发任务需要处理时,再使用传统的多线程就会造成大量的资源创建销毁导致服务器效率的下降。这时候,线程池就派上用场了。线程池技术为线程创建、销毁的开销问题和系统资源不足问题提供了很好的解决方案。 优点: (1)可以控制产生线程的数量。通过预先创建一定数量的工作线程并限制其数量,控制线程对象的内存消耗。 (2)降低系统开

编辑编辑器 7290

python线程池(threadpool)模块使用

最近碰到个问题,需要telnet登录上千台机器去取主机名;其中有用户名密码交互部分,有需要延迟的部分,大概一次登录一次到处理完要10s,1000台机器串行处理就需要1000×10s,差不多三个小时,这是很难受的事情; 之前用thread的start_new_thread方法也可以实现,但是线程数量不好控制,没找到相关的控制线程数量的锁; 找了下关于python的线程池,找到threadpool

u011734546的专栏 1万+

python创建线程池(threadpool模块和multiprocessing模块)

目录1.threadpool模块2.multiprocessing模块 1.threadpool模块 调入模块 import threadpool 创建线程池 pool = threadpool.ThreadPool(10) 这里的"10"代表创建10个子线程 规定线程池执行的任务 tasks = threadpool.makeRequests(outdata,datalist) outdata是函数名,datalist是一个参数列表,线程池会依次提取datalist中的参数引入到函数中来执行函数,所

SmallSweets的博客 3391
上一篇: JSP代码加固
下一篇: IIS日志清理(VBS版,JS版)
an0708
博客等级 码龄12年 30粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值