python 线程池内存泄露_python线程池ThreadPoolExecutor,实现目的:线程高可用、防止内存炸裂、线程可复用,降低因为不断的新建线程和销毁线程造成的浪费...

本文通过多个迭代版本,探讨如何使用Python的线程池ThreadPoolExecutor实现线程高可用、防止内存泄露。通过控制任务写入速度和监测线程状态,达到节约内存和提高系统性能的目的。文中详细分析了不同版本的优缺点,并给出了最终的优化方案。
摘要由CSDN通过智能技术生成

应用场景:不断消费一个容器里面的数据,使用同一个线程池,实现高可用性并减少系统性能开销;(这里拿redis作为容器来做示范),线程池的使用请查看https://www.cnblogs.com/hoojjack/p/10846010.html。

需求:程序开始前创建一个线程池,然后一直用这个线程池来运行程序,不销毁这个线程池,尽量高效的使用这个线程池;实现高可用性和节约内存的作用;

线程池消费原理:将任务都放在一个任务池A里面,然后等线程池里面的线程空闲了就分发给空闲的线程,然后线程的任务执行完毕后继续接任务;这就要控制一下接受任务的速度,如果无限循环的将任务写入任务池A里面,那么就会导致系统内存爆炸,例如迭代版本二实例;

主体程序:

import redis, time

from concurrent.futures import ThreadPoolExecutor

class Redis_demo(object):

def __init__(self):

self.redis_pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=0, decode_responses=True)

def consumer(self):

redis_client = redis.Redis(connection_pool=self.redis_pool)

data = redis_client.rpop("test_qly")

return data

<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值