ホームページ >バックエンド開発 >Python チュートリアル >Python でログ ファイルを追跡する方法: ブロッキングと非ブロッキング?

Python でログ ファイルを追跡する方法: ブロッキングと非ブロッキング?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-20 19:54:181060ブラウズ

How to Tail Log Files in Python: Blocking vs. Non-Blocking?

Python を使用したログ ファイルの追跡

多くの場合、ログ ファイルを追跡したり、追加された新しいコンテンツを表示するためにログ ファイルを受動的に監視したりすることが必要になります。 。これは、Python でいくつかの方法で実現できます。

ノンブロッキング

このアプローチでは、サブプロセスを使用してモジュールを選択できます。

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)

このコードは、指定されたファイルに対して tail -F を実行するサブプロセスを開き、その出力をポーリングして新しいデータを取得し、利用可能な場合はそれを出力します。このアプローチはメイン プログラムをブロックしません。

ブロック

より単純なブロック アプローチは、サブプロセス モジュールのみを使用して使用できます。

import subprocess

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

このコードは、追加された新しい行も出力しますが、末尾のプログラムが閉じられるまでブロックされます。

以上がPython でログ ファイルを追跡する方法: ブロッキングと非ブロッキング?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。