日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

python以追加方式打开文件 线程安全吗,Python的open函数文件读写线程不安全,logging模型文件读写线程安全!...

發(fā)布時(shí)間:2025/3/15 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python以追加方式打开文件 线程安全吗,Python的open函数文件读写线程不安全,logging模型文件读写线程安全!... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

工作中遇到的問(wèn)題:如何在多線程的程序中同時(shí)記錄日志?

最初圖省事,使用了最原始的open函數(shù)來(lái)寫(xiě)日志,因?yàn)殚_(kāi)始使用的寫(xiě)文件模式的是追加('a'),發(fā)現(xiàn)并沒(méi)有線程不安全的現(xiàn)象,各個(gè)線程的的日志信息都寫(xiě)入到了日志文件中。

后來(lái)將寫(xiě)文件模式改成了只寫(xiě)默認(rèn)('w'),這時(shí)候線程不安全的問(wèn)題就顯露出來(lái)了,只有一個(gè)線程的日志信息被記錄。

這時(shí)候覺(jué)得不能再圖省事了,有必要把Python標(biāo)準(zhǔn)庫(kù)中專用日志模塊logging好好學(xué)習(xí)一下,果然不讓人失望,logging是線程安全的。無(wú)論是只寫(xiě)模式,還是追加模式,多線程的日志信息都正確的被記錄下來(lái)了。

以下是測(cè)試代碼:

def file_io(message,mode):

with open('log_test.log',mode) as f:

f.write(message)

f.write('\n')

def logging_io(message,mode):

logging.basicConfig(level='DEBUG',

filename='log_test1.log',

filemode=mode)

logging.info(message)

if __name__ == '__main__':

messages= ['---hello--', '----nihaojlj', '----world%%%%%%%%%%%%%%%%%%']

for m in messages:

th = threading.Thread(target=logging_io, args=(m,'a'))

th.start()

總結(jié):

多線程同時(shí)寫(xiě)文件的時(shí)候,追加模式('a')貌似并沒(méi)有線程不安全的現(xiàn)象

多線程記錄日志信息,還是使用標(biāo)準(zhǔn)庫(kù)的logging模塊吧,它線程安全!專業(yè)的事用專業(yè)的模塊!

總結(jié)

以上是生活随笔為你收集整理的python以追加方式打开文件 线程安全吗,Python的open函数文件读写线程不安全,logging模型文件读写线程安全!...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。