案例+源码:MySQL数据库连接池详解

高并发下数据库连接使用方案:

  1.使用已有数据库连接池(下文有介绍)

  2.每个执行单元建立一次连接独享;(效率超低,难以维护,不建议使用)

  3.手动维护线程池(本人在MAC测试目前效率最高);

 

实测代码案例:

import timeimport pymysqlfrom dbutils import persistent_db, pooled_db, simple_pooled_db, steady_dbfrom multiprocessing.pool import ThreadPoolfrom abc import abstractmethod,ABCMetafrom queue import Queue# print(help(pooled_db.PooledDB))# pooled_db 线程安全# print(pymysql.threadsafety)db_conf = {"host": "127.0.0.1",           "port": 3306,           "user": "root",           "password": "123456",           "database": "userinfo"           }class TaskConsumer(metaclass=ABCMeta):    @abstractmethod    def _task_worker(self, i):        pass    def consumer(self):        task_pool = ThreadPool(self.task_pool_num)        start_time = time.time()        for i in range(self.task_num):            task_pool.apply_async(func=self._task_worker, args=(i,))        task_pool.close()        task_pool.join()        return time.time() - start_time    def db_read(self, cur, sql, i):        # time.sleep(2)        cur.execute(sql)        print(i, cur.fetchall())class DbPoolTest(TaskConsumer):    def __init__(self, task_num, task_pool_num, max_conn, blocking=True, **db_conf):        self.task_num = task_num  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值