Python的open函数文件读写线程不安全,logging模型文件读写线程安全!
工作中遇到的问题:如何在多线程的程序中同时记录日志?
最初图省事,使用了最原始的open函数来写日志,因为开始使用的写文件模式的是追加('a'),发现并没有线程不安全的现象,各个线程的的日志信息都写入到了日志文件中。
后来将写文件模式改成了只写默认('w'),这时候线程不安全的问题就显露出来了,只有一个线程的日志信息被记录。
这时候觉得不能再图省事了,有必要把Python标准库中专用日志模块logging好好学习一下,果然不让人失望,logging是线程安全的。无论是只写模式,还是追加模式,多线程的日志信息都正确的被记录下来了。
以下是测试代码:
1 def file_io(message,mode): 2 with open('log_test.log',mode) as f: 3 f.write(message) 4 f.write('\n') 5 6 7 def logging_io(message,mode): 8 logging.basicConfig(level='DEBUG', 9 filename='log_test1.log', 10 filemode=mode) 11 logging.info(message) 12 13 14 if __name__ == '__main__': 15 messages= ['---hello--', '----nihaojlj', '----world%%%%%%%%%%%%%%%%%%'] 16 for m in messages: 17 th = threading.Thread(target=logging_io, args=(m,'a')) 18 th.start()
总结:
- 多线程同时写文件的时候,追加模式('a')貌似并没有线程不安全的现象
- 多线程记录日志信息,还是使用标准库的logging模块吧,它线程安全!专业的事用专业的模块!
转载于:https://www.cnblogs.com/luckyboy314/p/10778868.html
Python的open函数文件读写线程不安全,logging模型文件读写线程安全!相关推荐
- python以追加方式打开文件 线程安全吗,Python的open函数文件读写线程不安全,logging模型文件读写线程安全!...
工作中遇到的问题:如何在多线程的程序中同时记录日志? 最初图省事,使用了最原始的open函数来写日志,因为开始使用的写文件模式的是追加('a'),发现并没有线程不安全的现象,各个线程的的日志信息都写入 ...
- python加载模型文件进行图片分类_tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式...
Google提供了一个工具,TensorBoard,它能以图表的方式分析你在训练过程中汇总的各种数据,其中包括Graph结构. 所以我们可以简单的写几行Pyhton,加载Graph,只在logdir里 ...
- python调用自定义函数返回值的类型_生成dll文件以及python对DLL中函数的调用(参数类型以及返回值)...
工具:VS2010 python2.7 (若使用的python是64位的,生成的dll也要使用x64) 系统:win7pro 64bit 首先,dll工程的创建以及dll文件的生成: new p ...
- OBJ模型文件的结构、导入与渲染
在[3DS文件结构的初步认识]中提及了3DS格式模型文件.固然3DS格式很常用,但OBJ格式的模型也是很常见的,于是咔嚓了一下心,熟悉了一下格式,并写了一个导入OBJ格式模型的类,顺便有此文.--Zw ...
- java加载pmml模型文件报错_PMML总结与思考PMML模型生成和加载示例
在机器学习用于产品的时候,我们经常会遇到跨平台的问题.比如我们用Python基于一系列的机器学习库训练了一个模型,但是有时候其他的产品和项目想把这个模型集成进去,但是这些产品很多只支持某些特定的生产环 ...
- 现代opengl 设计 3D模型文件导入显示
利用3D模型导入库assimp, 可以读取很多种格式的3D模型文件,现在我们就用opengl 显示出来.而这需要一个桥,就是数据和opengl 显示,前文我们介绍了网格Mesh类,现在介绍model ...
- python读取数据的函数详解_你了解文件缓存机制吗?磁盘文件如何读写?Python中open函数详解...
我们知道,在使用Python打开一个文件时,一般使用的是open()函数,但是你真正了解这个函数么?文件打开后如何进行缓存?对于大文件它是如何处理的?今天,小编带你来详细了解一下-- Python如何 ...
- python调用什么函数实现对文件内容的读取_如何使用python语言中的方法对文件进行读写操作...
在我们使用python语言中的文件时,可以使用open()方法打开文件,close()方法关闭文件,read()方法读取文件内容,write()方法写入内容到文件中.下面利用几个实例说明文件读写方法, ...
- python中io.textio_Python文件读写概述(IO操作、文件读写、stringiobytesio、序列化),python,的,小,总结,StringIOBytesIO...
IO操作 在进行文件的读写之前,需要说明几点.首先,运行的程序和读取的数据都会在内存中缓存. 进入到 程序或数据 内存 其次,用python程序进行文件的读写,需要创建一个小工具–文件流,用来处理数据 ...
最新文章
- hadoop使用mapreduce统计词频_深圳嘉华学校之Hadoop简介(什么是Map-Reduce-Mapreduce-about云开发)...
- 20145207 《Java程序设计》第4周学习总结
- 通过PowerShell查询本机IP地址
- JS之返回字符串最后出现的位置lastIndexOf
- amazeui学习笔记--css(基本样式4)--打印样式Print
- orac l e数据库第一章
- 可扩展的通用异常检测系统 EGADS
- 用C#实现将html文件转换为chm文件
- oracle恢复删除数据
- Elastic认证工程师到底有没有用?
- 51单片机单片机基础知识
- 修改FTP和MSTSC默认端口号
- 《德鲁克管理思想精要》读书笔记
- (1)Artemis简介
- Linux----生产者与消费者
- Vue全家桶之webpack详解(四)
- NB-IoT天线同轴电缆RG316、RG174、RG178
- 评估假设函数是否过拟合的方法
- 最近无聊做了一个新站玩玩(www.01zhc.cn)
- 计算机课堂如何落实知识点,浅议怎样组织计算机课堂教学原稿
热门文章
- 偷天换日——新型浏览器劫持木马“暗影鼠”分析
- Navicat Premium 数据库设计器和报表有什么作用
- Google Map App 问题集锦
- 从闲扯开始我的技术博客吧
- 使用vSphere Host Update Utility 4.0升级ESX 3到4.0版本
- Delphi 中的字符串函数(5) - SysUtils 中的 Ansi 字符串函数
- python实例(一)
- Navicat使用教程:使用Navicat Query Analyzer优化查询性能(第1部分)
- 【学时总结】 ◆学时 · I◆ A*算法
- 发现一篇超详细的ELK搭建