python
还没秃的coder
这个作者很懒,什么都没留下…
展开
-
python项目中的配置文件
灵感来自与Django源码 import importlib import os class Settings: def __new__(cls, settings_module=None): if not hasattr(cls, '_has'): obj = object() settings_module = settings_module if settings_module else os.environ.get('SET原创 2021-03-11 11:40:03 · 150 阅读 · 0 评论 -
命令行解析总结
argparse """ argparse(python自带) """ import argparse # 初始化解析器 parser = argparse.ArgumentParser() # 定义参数 parser.add_argument("-f", "--file", help="统计指定文件类型") # 解析 args = parser.parse_args() print(f"传入参数:{args.file}") click """ click(Flask作者写的) pip instal原创 2021-03-11 10:27:45 · 173 阅读 · 0 评论 -
性感的装饰器
装饰器在文件加载时就会被调用 运用在mysql中 import functools import pymysql from pymysql.cursors import DictCursor from DBUtils.PooledDB import PooledDB class Mysql(object): __pool = None def __init__(self): self._conn = Mysql.__get_conn__() self.原创 2021-03-10 15:14:18 · 69 阅读 · 0 评论 -
GIL
GIL存在的原因 python内核基于C编写, 大部分C语言库都不是原生线程安全的 特性 多线程进行cpu密集型计算,会存在频繁的上下文切换,使得效率低下 多线程只对I/O密集型计算产生正面效果,而至少有一个cpu密集型线程存在,那么多线程效率就会因GIL而大幅下降 py3对GIL的改进 强制线程在固定时间后释放 cpu密集型会优先获取 在其他线程有机会运行之前,不允许当前线程重新获取(动态调整自身的优先级,py2.x没有此机制) ...原创 2021-03-10 12:51:24 · 93 阅读 · 0 评论 -
python魔法方法小感
方法介绍 __getattr__: 访问不存在的属性,会自动调用这个函数作为返回值 __getattribute__: 那么无论访问什么属性,都是通过这个函数获取,包括方法;如果__getattribute__抛出了AttributeError异常,并且定了了__getattr__函数,那么会调用__getattr__这个函数,不论这个属性到底是不是存在,也就是说属性访问的一个大致优先级是:__getattribute__ > __getattr__ > __dict__ __dict__:原创 2021-03-10 12:44:33 · 101 阅读 · 0 评论