破棄されたブログ

このブログは破棄されました。

Python で「実行中のプログラムの進捗度を手っ取り早く確認したい」

この記事の Python 版。 Python 2.7 でしか試してないけど、Python 3 でも動くはず(ってライブラリの説明に書いてあった)。 あと、 Windows でも動くらしい。

TL;DR;

setproctitle というライブラリを使う。 sys.argv[0] に代入してもだめ。 あんまし手っ取り早くない。

コード例

from setproctitle import setproctitle
import time
import sys

orig_program_name = sys.argv[0]

for i in xrange(100):
    # do stuff
    time.sleep(0.1)

    # change proces name
    setproctitle("{} ({:03d}%)".format(orig_program_name, i))

説明

Linux 上でプロセス名を変更するには、 PR_SET_NAME を第一引数として、 prctl 関数を呼び出す必要がある。また、 Python からはプロセス名を変更するためのモジュール・組み込み関数は提供されていないため、 C の関数を直接呼び出さなければならない。 実際のコードは、 Is there a way to change effective process name in Python? - Stack Overflow が参考になる。

このあたりをよろしくやってくれるのが setproctitle というライブラリらしい。

備考1

ググったらもうあった。

備考2

はてブロの embed がクソイカしてて最高

参考資料

広告を非表示にする