首頁 > 後端開發 > Python教學 > 如何在 Python 中尾隨日誌檔案而不阻塞?

如何在 Python 中尾隨日誌檔案而不阻塞?

Linda Hamilton
發布: 2024-11-16 07:19:03
原創
922 人瀏覽過

How Can I Tail Log Files in Python Without Blocking?

Python Tail:無阻塞地追蹤日誌檔案

在Python中,可以使用各種方法實現無阻塞或鎖定地追蹤日誌文件。常用的方法是將 subprocess 模組與 select 模組結合使用。

非阻塞尾部:

在 Linux 環境中工作時,您可以利用選擇模組來輪詢運行 tail 命令的子進程的輸出管道。以下是範例:

import time
import subprocess
import select

f = subprocess.Popen(['tail', '-F', filename],
                   stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p = select.poll()
p.register(f.stdout)

while True:
    if p.poll(1):
        print(f.stdout.readline())
    time.sleep(1)
登入後複製

此程式碼使用 select.poll() 方法來檢查輸出管道上是否有新資料可用。當它偵測到新行時,它會列印它們。

阻止拖尾:

為了更簡單的實現,您可以使用 subprocess 模組而不使用 select 模組。但是,此方法會阻塞腳本,直到尾進程關閉。

import subprocess
f = subprocess.Popen(['tail', '-F', filename],
                   stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while True:
    line = f.stdout.readline()
    print(line)
登入後複製

此程式碼會在出現新行時讀取並列印新行,但它會阻塞直到尾進程終止。

以上是如何在 Python 中尾隨日誌檔案而不阻塞?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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