首頁 > 後端開發 > Python教學 > 如何處理多處理 Python 應用程式中的日誌記錄?

如何處理多處理 Python 應用程式中的日誌記錄?

DDD
發布: 2024-10-28 02:10:31
原創
859 人瀏覽過

How to Handle Logging in Multiprocessing Python Applications?

Python 中的多處理日誌記錄

使用Python 的多處理模組日誌時,重要的是要考慮記錄實踐,以避免記錄因多個進程寫入而導致錯誤同時處理相同的檔案句柄。預設情況下,mp.get_logger() 提供的多處理感知記錄器可確保 sys.stderr 中正確的鎖定機制。

但是,不支援多處理感知的模組可能需要修改才能使用多處理感知日誌記錄。為了避免這些更改,請考慮替代方法:

自訂日誌記錄處理程序

一種方法是建立一個自訂日誌處理程序,透過管道將日誌發送到父進程。這允許模組在父進程處理實際日誌記錄時使用標準日誌記錄模組。這是一個實作:

<code class="python">from logging.handlers import RotatingFileHandler
import multiprocessing, threading, logging, sys, traceback

class MultiProcessingLog(logging.Handler):
    def __init__(self, name, mode, maxsize, rotate):
        logging.Handler.__init__(self)

        self._handler = RotatingFileHandler(name, mode, maxsize, rotate)
        self.queue = multiprocessing.Queue(-1)

        t = threading.Thread(target=self.receive)
        t.daemon = True
        t.start()</code>
登入後複製

處理程序從子程序接收日誌記錄,並使用提供的檔案處理程序將它們寫入檔案。這確保了集中日誌記錄,而無需更改依賴模組。

以上是如何處理多處理 Python 應用程式中的日誌記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板