摘要:
1、python的MySQLdb和pymysql是两个基本数据库操作包,MySQLdb安装很麻烦,要有c++相关环境,python3也安装不了。 python3一般安装pymysql,此包与MySQLdb包具有高度的可替换性,只要学习一种库的api,另一种库的操作方法完全一模一样,不需要新学api。 阅读全文
摘要:
之前发过了一组常用的装饰器,包括了一个where_is_it_called的装饰器,可以计时和对入参和返回结果,被何处调用进行记录,十分强大。 这是用上下文,上下文的好处是,不需要抽成函数才能计时。 测试下: 阅读全文
摘要:
python -u 启动python文件的作用是不缓存,直接把输出重定向到文件,比如nohup启动什么的,如果不使用-u启动,那么程序中的print和日志什么的,可能不会非常及时的重定向到out文件,导致程序内部当前正在发生什么看不到,加上-u就会很及时了。 也可以添加环境变量 PYTHONUNBU 阅读全文
摘要:
/data/miniconda3dir/envs/mtfy/bin:$PATH 和$PATH:/data/miniconda3dir/envs/mtfy/bin 区别是非常大。在linux中不同环境变量用:分割在windiws中用;分割在supervisor中配置环境变量 /data/minicon 阅读全文
摘要:
需要批量操作时候,节省网络连接交互次数,可以使用 bulk_write。 设置ordered=False,因为批量操作中没有互相依赖关系,如果有前后顺序的互相依赖,需要设置为True。 bed_type_match_failed_list = [{'_id': b, 'update_time': datetime.datetime.now()} for b in self.bed_type_m... 阅读全文
摘要:
单例模式的写法非常多,但常规型的单例模式就是这样写的,各种代码可能略有差异,但核心就是要搞清楚类属性 实例属性,就很容易写出来,原理完全一模一样。 如下: 源码: 实例化了三个对象,执行结果可以猜猜: 可以发现,执行了一次new,但执行了两次init,这是在新式类下运行的,python3默认是新式类 阅读全文
摘要:
1、大部分情况下,你拥有一个单方法类的原因是需要存储某些额外的状态来给方法使用。 此种情况下可以使用闭包代替,参考 javascript的闭包计数器实现,python实现各种方法来实现计数器 关于这个计数器闭包和类各有千秋吧,但如果不是但方法的类,使用闭包模拟面向对象,那肯定是没有使用类好,类不光是 阅读全文
摘要:
格式化一般用%,但后来推荐用format format有进步,可以用索引或者名字,但仍然没有很方便和快捷 阅读全文
摘要:
1、self是什么,一般都说指对象本身,这样说了没了用,说了后还是很难懂,因为这样说了后,仍然完全搞不清楚,什么时候变量前需要加self,什么时候不需要加self。 造成很多人,已经怕了self,不停地测试,加self减self来测试代码,或者干脆不知道要不要self,所有变量前面一律加self,这 阅读全文
摘要:
由于之前有些需要过滤的文件已经提交到版本库了,之后再想起来添加时候已经晚了,使用如下方法 Git忽略规则和.gitignore规则不生效的解决办法 Git忽略规则: 在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如果没有这个文件, 阅读全文
摘要:
tail -f命令不能自动切换切片文件,例如日志是每100M生成一个新文件,tail -f不能自动的切换文件,必须关闭然后重新运行tail -f 此篇使用pyinotify,检测文件更新,并实现tail -f以外,还能自动识别切换切片文件。而且针对日志类型的文件做了单独样式优化。 运行 ./tail 阅读全文
摘要:
例如请求前和请求后各来一条日志,这样就不需要在自己的每个代码都去加日志了。 其实也可以直接记录'urllib3.connectionpool' logger name的日志。 1、结果就是这样。这样所有地方的requests请求都会生效了。 正常情况下我有自己围绕Session类实例包装的Sessi 阅读全文
摘要:
之前发过日志,再增加一种模板。logging.Formatter('%(asctime)s - %(name)s - File "%(pathname)s", line %(lineno)d, in - %(levelname)s - %(message)s', "%Y-%m-%d %H:%M:%S"), # 一个模仿traceback异常的可跳转到打印日志地方的模板此模板是模拟tracebac... 阅读全文
摘要:
1、按照测试用例的上下顺序,而不是按方法的名称的字母顺序来执行测试用例。 之前的文章链接 python修改python unittest的运行顺序 之前写的,不是猴子补丁,而是要把Test用例的类名传到run里面去执行,与原生的使用有一点区别。现在修改成,用的时候代码与原生unittest完全一模一 阅读全文
摘要:
一共三个文件 a.py内容是 print('被导入') x = 1 b.py内容是 import a a.x = 2 c.py内容是 import a import b print(a.x) 现在运行c文件,这个结果出乎很多人的意料大部分python人员都猜不对,结果是 在c文件里面不管是先导入a还 阅读全文
摘要:
打开cmd输入 regsvr32 c:\windows\SysWOW64\wintrust.dll 就可以了。 阅读全文
摘要:
1、普通就是一个函数作为装饰器,也可以用类名作为装饰器。 因为类和函数都是callable的,都可以使用括号来调用运行他。 2、上上篇的缓存一段时间的还是函数作为装饰器,类只是充当了比模块更下一级的命名空间,因为我的模块很大,不想搞很多模块级全局变量,所以用了class外壳。 正宗的类装饰器是这样 阅读全文
摘要:
之前发过了装饰器版本的异常记录日志,但是需要装饰在函数或方法上。此篇用上下文管理,用一个with就能记录错误了,不需要写成函数。 计算整形和字符串相加,运行结果是这样: 可以传verbose参数来控制记录错误的深度,默认写了100 阅读全文
摘要:
把函数结果缓存一段时间,比如读取一个mongodb,mongodb中的内容又在发生变化,如果从部署后,自始至终只去读一次那就感触不到变化了,如果每次调用一个函数就去读取那太频繁了耽误响应时间也加大了cpu负担,也不行。那就把结果缓存一段时间。 来一个缓存一段时间的装饰器。 测试下: 可以发现只计算了 阅读全文
摘要:
1、如果主线程是永远都不会结束的,那设置一个线程为守护线程是没必要的,设不设置都一样。 2、什么时候需要设置为守护线程?如果希望子线程一直运行,可以把子线程的代码写在while True里面一直循环,但同时要设置为守护线程,不然主线程结束了,子线程还一直运行,程序结束不了。 阅读全文