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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python多进程打印输出_多进程打印日志

發布時間:2024/9/30 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python多进程打印输出_多进程打印日志 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

多進程的日志和多線程的日志有一點區別。原因是 Python 的 logging 包不支持進程共享鎖,所以來自不同的進程的日志可能會混在一起。我們嘗試一下在上邊的例子里加一個基礎日志。下邊是代碼:import?loggingimport?multiprocessingfrom?multiprocessing?import?Process,?Lockdef?printer(item,?lock):

"""????Prints?out?the?item?that?was?passed?in????"""

lock.acquire()

try:

print(item)

finally:

lock.release()if?__name__?==?'__main__':

lock?=?Lock()

items?=?['tango',?'foxtrot',?10]

multiprocessing.log_to_stderr()

logger?=?multiprocessing.get_logger()

logger.setLevel(logging.INFO)

for?item?in?items:

p?=?Process(target=printer,?args=(item,?lock))

p.start()

記錄日志最簡單的方法是將所有的日志發送給 stderr 。我們可以通過調用函數?log_to_stderr?來實現。然后我們調用?get_logger?函數得到記錄器(logger),并把日志級別設置為 INFO。剩下的代碼和原來一樣。這里要說明一下,我并沒有用?join()?函數。相反, 父線程在退出的時候要顯式地調用?join()。

當你運行上邊的代碼,會得到像下面這樣的輸出:[INFO/Process-1]?child?process?calling?self.run()

tango

[INFO/Process-1]?process?shutting?down

[INFO/Process-1]?process?exiting?with?exitcode?0

[INFO/Process-2]?child?process?calling?self.run()

[INFO/MainProcess]?process?shutting?down

foxtrot

[INFO/Process-2]?process?shutting?down

[INFO/Process-3]?child?process?calling?self.run()

[INFO/Process-2]?process?exiting?with?exitcode?0

10

[INFO/MainProcess]?calling?join()?for?process?Process-3

[INFO/Process-3]?process?shutting?down

[INFO/Process-3]?process?exiting?with?exitcode?0

[INFO/MainProcess]?calling?join()?for?process?Process-2

現在你如果想把日志保存到硬盤,其實還有有些復雜的。你可以參考Python 的官方實例。

總結

以上是生活随笔為你收集整理的python多进程打印输出_多进程打印日志的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。