Python笔记(五) -- Python线程池

Python多线程网络编程(TCP) 把Client做成了一个类,实现了发送、接收接口,自动重连,心跳检测,python多线程实现同时执行两个while循环 立即下载

目前项目中有个工作是使用python定时处理数据库中的任务,之前是每个任务都起一个线程进行处理,随着任务数的增多,起的线程也越来越多,最终出现内存溢出情况。

于是在网上查到了线程池的使用,转载代码如下:

#Python的线程池实现

import Queue
import threading
import sys
import time
import urllib
import Log

#替我们工作的线程池中的线程
class MyThread(threading.Thread):
    def __init__( workQueue, timeout=30, **kwargs):
        threading.Thread.__init__( kwargs=kwargs)
        #线程在结束前等待任务队列多长时间
        timeout = timeout
        setDaemon(True)
        workQueue = workQueue
        start()

    def run(self):
        while True:
            try:
                #从工作队列中获取一个任务
                callable, args, kwargs = workQueue.get(timeout = timeout)
                #我们要执行的任务
                callable(args, kwargs)
			#任务队列空的时候结束此线程	
            except Queue.Empty: 
                break
            except :
                print sys.exc_info()
                raise
    
class ThreadPool:
    def __init__(  num_of_threads=10):
        workQueue = Queue.Queue()
        threads = []
        __createThreadPool( num_of_threads )
        
    def __createThreadPool(  num_of_threads ):
        for i in range( num_of_threads ):
            thread = MyThread( workQueue )
            threads.append(thread)
        
    def wait_for_complete():
        #等待所有线程完成。
        while len(threads):
            thread = threads.pop()
            #等待线程结束
            if thread.isAlive():#判断线程是否还存活来决定是否调用join
                thread.join()
    
    def add_job(  callable, *args, **kwargs ):
        workQueue.put( (callable,args,kwargs) )
    
def main():
    threadpool = ThreadPool(10)
	
	for task in taskList:
        threadpool.add_job(task, *args, **kwargs)
    
    threadpool.wait_for_complete()

if __name__ == '__main__':
    main()
详解Python 多线程 Timer定时器/延迟执行、Event事件 主要介绍了Python 多线程 Timer定时器/延迟执行、Event事件的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 立即下载

相关推荐

DC综合中set_dft_signal的实战配置与优化策略

本文深入解析了DC综合中set_dft_signal命令的实战配置与优化策略。文章从命令的核心作用出发,详细拆解了-view、-type、-usage等关键参数,并通过扫描使能与时钟门控的实战案例,展示了如何正确配置以实现测试模式下的功耗优化。同时,文章总结了高级优化策略、与低功耗流程的协同方法以及常见错误排查清单,旨在帮助数字芯片设计工程师构建高可测性、低功耗的稳健DFT基础。

weixin_28347369的博客 403

Python多线程与线程池(python线程池ThreadPoolExecutor)concurrent.futures高级别异步执行封装

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

Dontla的博客 1万+

深入解析ViT中的RoPE旋转位置编码:原理、实现与视觉应用

本文深入解析了ViT中的RoPE旋转位置编码原理、实现及其在视觉任务中的应用。RoPE通过旋转变换巧妙地将相对位置信息融入注意力计算,解决了传统绝对位置编码外推性差的问题,在图像分类、目标检测及生成任务中展现出更优的泛化能力和灵活性。

alice7model的博客 704

Python 线程池/进程池/协程池 定时脚本模板(实现了优雅退出)

python 线程 协程 进程 定时任务 优雅退出 脚本模板

sinat_34149445的博客 750

gesp c++ 五级知识点

gesp c++ 五级知识点

MMD.然大大 2009

OceanBase数据库LSM-Tree存储引擎深度解析:合并写入与压缩优化策略

OceanBase数据库采用创新的LSM-Tree架构设计,通过"基线-增量"分离存储实现高性能。内存中的MemTable处理写入,磁盘上的SSTable存储有序数据,利用多级缓存加速读取。写入时先写日志再更新内存,合并操作将增量数据整合为基线数据以优化查询性能。相比传统B+树引擎,OceanBase在写入吞吐、压缩效率和存储成本方面优势显著,特别适合写入密集型场景。合并操作作为核心机制,通过多种触发方式和执行策略平衡性能与资源消耗。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1339

python之线程池ThreadPoolExecutor笔记

从源码的方式去理解线程池的工作原理

wyz0923的博客 1264

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

路~可以走过 3683

Python之定时器,队列,线程池

定时器对象 此类表示一个操作应该在等待一定的时间之后运行 --- 相当于一个定时器。Timer类是Thread类的子类,因此可以像一个自定义线程一样工作。与线程一样,通过调用start()方法启动定时器。而cancel()方法可以停止计时器(在计时结束前), 定时器在执行其操作之前等待的时间间隔可能与用户指定的时间间隔不完全相同。 下面举个例子: import threading def run(): print("定时器启动了!") timer= threading...

qq_52122740的博客 827

【大数据技术干货】(还不懂数仓,数据中心?看这一篇就够了!)在实际的开发生产中,让你了解企业级数据中心整体架构(DB+ETL+ODS+DW+DM)的各个层次的过程详解,数据联系及功能区分

一 企业级数据中心架构 数据仓库的整体架构,各个系统的元数据通过ETL同步到操作性数据仓库ODS中,对ODS数据进行面向主题域建模形成DW(数据仓库),DM是针对某一个业务领域建立模型,具体用户(决策层)查看DM生成的报表。 二 DB 三 ETL(Extract-Transform-Load) ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI项目重要的一个环节。 通常情况下,在BI项目中ET

liuchunhang的博客 1288

Open3D (C++) 点云边界提取【2025最新版】

Compute the boundary points of a point cloud.The implementation is inspired by the PCL implementation. Reference:https://pointclouds.org/documentation/classpcl_1_1_boundary_estimation.html

点云侠的博客 871

python之线程池

http://c.biancheng.net/view/2627.html

weixin_50140040的博客 413

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Python3 ThreadPoolExecutor线程池 笔记

Python3 ThreadPoolExecutor线程池 用到的模块:concurrent.futures 为什么需要线程池 主线程中可以获取某一个线程的状态或者某一个任务的状态,以及返回值。 futures可以让多线程和多进程编码接口一致 怎么使用 线程池的基类是concurrent.futures模块中的Executor,Executor提供了两个子类,即 ThreadPoolExecutor 和 ProcessPoolExecutor,其中 ThreadPoolExecutor 用于创建线程池,而

qiting00的博客 1833

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

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

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

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

python线程池的使用

线程池的基类是 concurrent.futures 模块中的 Executor,Executor 提供了两个子类,即 ThreadPoolExecutor 和 ProcessPoolExecutor,其中 ThreadPoolExecutor 用于创建线程池,而 ProcessPoolExecutor 用于创建进程池。 如果使用线程池/进程池来管理并发编程,那么只要将相应的 task 函数提交给线程池/进程池,剩下的事情就由线程池/进程池来搞定。 Exectuor 提供了如下常用方法: 1.sub.

wtt234的专栏 1400

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

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

weixin_39572972的博客 1512

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

Python线程池

python线程池 ThreadPoolExecutor 的用法及实战 https://www.jianshu.com/p/6d6e4f745c27 爬虫 PYTHON线程池及其原理和使用 https://www.cnblogs.com/xiaozi/p/6182990.html thread_pool = ThreadPoolExecutor(max_workers=4, thread_name_prefix="socket_") while True: conn, addr = the_s

积累与备忘 832

笔记五Python多线程与多进程

笔记五Python多线程与多进程提示:以下是本篇文章正文内容,下面案例可供参考当单纯的只是想要提升效率,多线程如果多个任务之间,相互隔离… 多进程…

丿红叶丶 753

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

python线程池模块_Python线程池模块ThreadPoolExecutor用法分析

本文实例讲述了Python线程池模块ThreadPoolExecutor用法。分享给大家供大家参考,具体如下:python3内置的有Threadingpool和ThreadPoolExecutor模块,两个都可以做线程池,当然ThreadPoolExecutor会更好用一些,而且也有ProcessPoolExecutor进程池模块,使用方法基本一致。首先导入模块from concurrent.fu...

weixin_39615499的博客 512

python 笔记 之 线程池

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33851429的博客 89

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() ...

112
上一篇: Python笔记(四) -- 简单的爬虫
下一篇: Python笔记(六) -- Python使用SMTP发送邮件
Aaron.com
博客等级 码龄17年 25粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值