1、单例模式指的是创建单个实例,例如:数据库连接池中包含10个数据库连接,用户访问数据时随机从连接池中拿出一个进行连接,其他用户再次访问时不再创建对象进行连接
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!usr/bin/env python # -*- coding:utf-8 -*- class ConnecttionPool: __instance = None def __init__(self): self.ip = '222.133.177.67' self.port = '3306' self.username = 'odoo' self.password = '123456' self.con_list = [1,2,3,4,5,6,7,8,9,10] @staticmethod def get_instance(): #创建实例的方法 if ConnecttionPool.__instance: return ConnecttionPool.__instance else: ConnecttionPool.__instance = ConnecttionPool() return ConnecttionPool.__instance def get_connection(self): #获得连接 import random r = self.con_list[random.randrange(1,10)] return r for i in range(10): pool = ConnecttionPool.get_instance() print('去连接池',pool,'获得一个连接') r = pool.get_connection() print('获得的连接是:',r)
2、简单的服务器请求框架
代码需要在2.7版本下运行
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!usr/bin/env python # -*- coding:utf-8 -*- from wsgiref.simple_server import make_server def RunServer(environ,start_response): start_response(status='200 OK',headers=[('Content-Type','text/html')]) url = environ['PATH_INFO'] #url取的是访问时端口号后面的地址 return '谢谢你的访问!' #可以读取html文件 if __name__ == '__main__': httpd = make_server('',8000,RunServer) print('Server Http on 8000......') httpd.serve_forever() #循环监听访问,当有访问时,返回RunServer函数的返回值
3、服务器网站;且模拟多人访问创建一个连接实例,并且随机取连接线路
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#!usr/bin/env python # -*- coding:utf-8 -*- class ConnectionPool: ins = None def __init__(self): self.ip = '202.102.154.3' self.port = '3306' self.username = 'odoo' self.password = '123456' self.connections = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] def get_connection(self): import random i = random.randrange(0,10) return self.connections[i] @staticmethod def get_instance(): if ConnectionPool.ins: return ConnectionPool.ins else: re = ConnectionPool() ConnectionPool.ins = re return re from wsgiref.simple_server import make_server def RunServer(environ,start_response): start_response(status='200 OK',headers=[('Content-Type','text/html')]) url = environ['PATH_INFO'] #url取的是访问时端口号后面的地址 pool = ConnectionPool.get_instance() print(pool) cnn = pool.get_connection() print(cnn) return_text = '谢谢你的访问!%s-%s' %(pool,cnn) return return_text #可以读取html文件 if __name__ == '__main__': httpd = make_server('',8000,RunServer) print('Server Http on 8000......') httpd.serve_forever() #循环监听访问,当有访问时,返回RunServer函数的返回值