![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
文章平均质量分 54
阿刁阿
如切如磋 如琢如磨
展开
-
logging 分线程\进程输出日志文件
背景前段时间,将公司框架的日志机制从所有线程\进程都输出日志到一个文件里,改造成线程\进程将各自的日志输出到各自的日志文件里,由于公司是内网涉密环境,所有资料都无法带出,这里总结仅描述思路。假设通过logging模块封装好后可供调用的日志方法是:myInfo(msg)改造前所有线程\进程调用myInfo,myInfo中使用的都是同一个加载同样文件处理器的记录器。所以不同的线程\进程,日志出口都是同一个文件。改造后框架依然调用myInfo(msg)方法输出日志。区别在于,在myInfo执行时原创 2021-05-16 22:40:32 · 556 阅读 · 0 评论 -
logging模块 日志文件 程序运行时报文件正在被使用
背景公司的自研框架,使用logging模块承担日志功能。之前的做法是将所有线程和进程的日志都打印在一个文件里,且框架每次运行时都将用open函数w模式截断日志文件,保证每次运行日志的独立性。后面根据使用场景,需要分线程、进程打印日志,即每一个线程\进程的日志都使用不同的日志文件打印。此时open函数截断日志文件的模式已经不可用,在每次运行前,需要将之前产生的日志文件删除。由于框架有一个UI界面,在UI上重复运行框架,到删除日志文件的代码时,会报日志文件正在使用,无法删除。分析logging模块文件原创 2021-05-16 21:47:32 · 1133 阅读 · 0 评论 -
多线程threading之私有变量
文章目录前言一、threading.local()对象二、示例:前言python多线程的特征之一是:子线程共享主线程的对象。这在有些时候很方便(当然不注意也会造成bug。),但有些时候,我们确实需要每个线程仅维护自己的本地数据,即私有变量。一、threading.local()对象线程本地数据是特定线程的数据。管理线程本地数据,只需要创建一个local (或者一个子类型)的实例并在实例中储存属性:mydata = threading.local()mydata.x = 1在不同的线程中,原创 2020-11-23 21:35:01 · 908 阅读 · 1 评论 -
Python 装饰器记录
装饰器入门在这里,我们先不用理解实现装饰器需要的几个python特性,以及装饰器的内在原理。我们仅仅先了解函数装饰器的基本作用,以及怎么实现一个具备基本作用的函数装饰器。函数装饰器的基本作用:字面理解,装饰函数用的。其作用也不是很高大上,不过是装饰器,可以对其装饰的函数对象,做一些这个函数执行前的准备工作,以及执行后的请理工作。工作流程类似于:setup()fun()teardown()而装饰器不过是改变了其表现形式而已,变成了这样:@do_itdef fun(): pass所原创 2020-11-03 20:58:46 · 700 阅读 · 0 评论 -
Python import用法之2个细节
本文不介绍import的用法和机制。仅介绍一个细节。该细节需要和以下两点有联系:# 1. 从一个模块中导入指定的类或者方法form A import b# 2. 从一个模块中导入全部from A import *笔者之前根据这两个知识点,从其表面意思理解, 忽略了该细节。该细节是:第二种方式,导入全部,是真的导入全部(当然除了if name == 'main’里面的东西)。而第二种方式,确不仅仅只导入了指定的类和方法。举例说明:有个名命为A的模块,内容如下我们从另一个模块中impo原创 2020-11-02 21:59:33 · 387 阅读 · 0 评论 -
python赋值、浅拷贝、深拷贝总结概述
背景python中赋值、浅拷贝、深拷贝这三个知识点,表面看都是对一个对象复制为另一个对象,但由于涉及到对象值和对象地址,所以这三个知识点在细节方面,有所差异。面试时也有被问到。所以做个总结。概述先罗列如下概念:不可变对象:对象的值是不可变的。我们不可以修改该对象的值。该对象的值和地址一定是唯一对应的。如果强行赋予引用该对象的变量新的值,相当于创建了一个新对象,新的对象有新的值和新的地址。...原创 2020-04-26 15:52:05 · 200 阅读 · 0 评论 -
pytest之命令行选项
背景pytest的命令行选项可以设置pytest的运行方式和运行结果。了解各种命令选项的含义,有助于我们根据测试场景,更灵活的使用pytest。如何查看全部命令行选项windows系统下,打开cmd,输入pytest --help常用命令行选项介绍–collect-only该选项不启动测试,执行该命令选项,仅会罗列出当前设置下,将会被执行的用例。示例1:import pytest...原创 2020-03-25 22:05:49 · 1347 阅读 · 0 评论 -
python3 基于lxml解析html简介
背景工作中需要解析html文件,正好知道lxml模块有这个功能,所以就用上了。不过是入门级别的使用,但大概也算对lxml模块的加深了一些了解。lxml模块有很多功能,我目前主要用于处理xml和html。这个模块兼容大多数ElementTree API(python3中用于处理xml的模块),并且更加优秀。个人认为,lxml的优势在于功能强大,提供很多API来完成各种任务。劣势就在于提供API...原创 2019-10-03 16:33:02 · 2770 阅读 · 0 评论 -
Python3 多线程 threading学习笔记
先了解下进程和线程理论基础感觉这一块涉及的专业知识还是比较深入的,暂时只能先总结下基础概念。待以后看有没有必要系统学习。了解进程之前,了解下进程是怎么来的或许有帮助。我们放在磁盘上的各种软件,可以称作【程序】;这个时候我们的软件和操作系统的几乎没什么关系。当一个程序被选中执行后,就可以称作【作业】;当作业被载入内存时,就变成了进程。进程是一个驻留在内存中的作业,也可以理解为是一个驻留在内存中...原创 2019-08-17 23:00:37 · 509 阅读 · 2 评论 -
Python3 lxml解析XML 解决GBK编码问题ValueError: multi-byte encodings are not supported
背景在使用xml.etree.ElementTree解析xml的时候报错:ValueError: multi-byte encodings are not supported。一番排查后,发现公司里的这套软件系统,xml文件既有utf-8编码格式,又有GB2312编码格式。这算不算踩坑了???我也没有办法,还是要继续干活。一番百度后,发现了一个比xml.etree.ElementTree更有意思...原创 2019-08-16 19:04:14 · 8064 阅读 · 1 评论 -
Python3 使用configparser 读写ini文件
没有标题原创 2019-08-14 19:40:16 · 488 阅读 · 0 评论 -
Python3 xml.etree.ElementTree 读取XML文件
背景工作中需要读取原创 2019-08-14 16:38:35 · 5069 阅读 · 0 评论 -
Python 程序模块化 在文件之间传输变量 多个文件使用同一个变量
背景程序模块化,那么一定有某个时候需要在文件之间传输变量。方法:模块法在文件之间传递变量,通过global语句是没办法的。而且:某书中的原话:global语句用于将变量标记为全局的。在函数中,可使用它给全局变量重新赋值。使用global语句通常被视为糟糕的编程风格,因此应尽可能避免。以前理解的在文件之间传递变量,大概就是某个文件A有个变量,自己要把A这个变量声明为全局的,代表别的文件可以...原创 2019-07-26 22:28:04 · 3756 阅读 · 0 评论 -
Python3基于Tkinter编写工具
背景如果想编写一个带图形界面工具,推荐Python+Tkinter。在下觉得,对我等凡人而言,编写一款轻量级的工具,使用这款轻量级的Tkinter GUI框架正好相得益彰。一切都在下面import tkinterfrom tkinter import *from tkinter import messageboxfrom tkinter.scrolledtext import Scr...原创 2019-07-26 14:36:57 · 535 阅读 · 0 评论 -
Python 跨目录调用模块 跨文件调用模块
Python 跨目录调用模块 跨文件调用模块调用包中嵌套的包中的模块原创 2019-07-25 21:12:39 · 3046 阅读 · 6 评论