关闭

Python设计模式(二十二)【连接池模式】

标签: python设计模式
525人阅读 评论(0) 收藏 举报
分类:

天才是重复次数最多的人。

# -*- coding: utf-8 -*-

class QueueObject():

    def __init__(self, queue, auto_get=False):
        self._queue = queue
        self.object = self._queue.get() if auto_get else None

    def __enter__(self):
        if self.object is None:
            self.object = self._queue.get()
        return self.object

    def __exit__(self, Type, value, traceback):
        if self.object is not None:
            self._queue.put(self.object)
            self.object = None

    def __del__(self):
        if self.object is not None:
            self._queue.put(self.object)
            self.object = None


def main():
    try:
        import queue
    except ImportError:  # python 2.x的兼容性
        import Queue as queue

    def test_object(queue):
        queue_object = QueueObject(queue, True)
        print('内部 func: {}'.format(queue_object.object))

    sample_queue = queue.Queue()
    sample_queue.put('yam')
    with QueueObject(sample_queue) as obj:
        print('Inside with: {}'.format(obj))
    print('Outside with: {}'.format(sample_queue.get()))

    sample_queue.put('sam')
    test_object(sample_queue)
    print('外部 func: {}'.format(sample_queue.get()))

    if not sample_queue.empty():
        print(sample_queue.get())

if __name__ == '__main__':
    main()

结果如图:

这里写图片描述

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Python实现Mysql数据库连接池

python连接Mysql数据库: python编程中可以使用MySQLdb进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接mysql数据库请求时,都是独立的去请求访问,相当浪费资源,而且访问数量达到一定数量时,对mysql的性能会产生较大的影响。因此,实际使用中,通常会使用数据库的连接...
  • zbc1090549839
  • zbc1090549839
  • 2016-05-07 10:57
  • 20533

数据库 -- 由数据库连接池引出的三种设计模式

笔记摘要:      这里首先对数据库连接池的优化进行了说明,同时自己编写了一个数据库连接池,在实际开发中,为了获取标准的数据源,我们需要去实现javax.sal.DataSource接口,      在实现过程中对于链接对象的clos...
  • xushuaic
  • xushuaic
  • 2013-03-31 22:00
  • 2451

Python 数据库的连接池

在Python中如果对象定义了__del__方法的话,在对象的引用记数为0时会自动调用__del__方法(很象c++中的析构函数),但如果A对象引用B对象,B对象又引用A对象,就形成循环引用,此时A,B对象引用次数都为1。python就无法正常调用__del__方法,原计划在__del__方法里释放...
  • bluehawksky
  • bluehawksky
  • 2014-09-05 16:03
  • 2428

设计模式之代理模式(实现自己的数据库连接池)

设计模式之代理模式(实现自己的数据库连接池)
  • canot
  • canot
  • 2016-02-08 22:54
  • 1903

连接器/ Python连接池

MySQL连接器/ Python 1.1.1和支持简单的连接池,这些特点:的 mysql.connector.pooling模块实现池。池打开和处理线程安全的连接数为请求者提供连接。连接池的大小是可配置池创建时间。它不能被调整大小。连接池可以叫池创建时间。如果没有名字,一个是使用连接参数来生成的。连...
  • wochunyang
  • wochunyang
  • 2016-01-07 21:28
  • 1147

python mysql使用连接池的通用操作类

以前用MySQLdb和PooledDB写过一个后来找不到了,现在重新写一个。因为PooledDB似乎是不支持python3的,所以我这里使用的是mysql官方的连接器mysql.connector.pooling(我还是用python2.7写的,python3还没试过)。 mysql-conne...
  • paololiu
  • paololiu
  • 2016-09-26 15:20
  • 3455

Python--Mysql连接池使用案例

1、工程结构 2、Config.py # coding:utf-8 ''''' Created on 2016年5月7日 @author: baocheng ''' DBHOST = "127.0.0.1&...
  • xuguokun1986
  • xuguokun1986
  • 2017-04-11 09:47
  • 653

Python数据连接池与mysql配合用法

# -*- coding: UTF-8 -*- """ desc:数据库操作类 @note: 1、执行带参数的SQL时,请先用sql语句指定需要输入的条件列表,然后再用tuple/list进行条件批配 2、在格式SQL中不需要使用引号指定数据类型,系统会根据输入参数自动...
  • u013690521
  • u013690521
  • 2016-10-25 14:39
  • 1093

数据库连接池 单例模式的实现

Java应用程序访问数据库的基本原理   在Java语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁,   即Java语言通过JDBC技术访问数据库。JDBC是一种“开放”的方案,它为数据库应用开发人员﹑数据库前台工具开发人员提供了一种标准...
  • liuxiaoxiaosmile
  • liuxiaoxiaosmile
  • 2015-07-23 15:47
  • 4994

单例模式下的可伸缩的数据库连接池的实现

使用数据库连接池的原因及优势        JDBC做为一种数据库访问技术,具有简单易用的优点。但在程序开发时,不使用数据库连接池的情况下,系统会存在诸多问题如:每一次Web请求都要建立依次数据库连接,改过程相当耗时,在开发模式下使...
  • zhangjinpeng66
  • zhangjinpeng66
  • 2013-08-27 21:34
  • 1289
    个人资料
    • 访问:1204308次
    • 积分:17527
    • 等级:
    • 排名:第645名
    • 原创:312篇
    • 转载:866篇
    • 译文:123篇
    • 评论:290条
    博客专栏
    文章分类
    打赏
    如果你觉得我的文章对您有用,请随意打赏。 微信 支付宝