0

UNIX での正しいプロセス制御について質問があります。私は FreeBSD 8.0 サーバーと python アプリケーションを持っています。Python アプリケーション プロセスを 3 回開始する必要があります (client.py スクリプト)。また、cron で 4 番目のプロセスを開始しようとすると、sys.exit() を実行する必要があります。

私のプロセスを制御する正しい方法を教えてもらえますか? スレッド数を含む ps -auxww または pid ファイル。おそらく、Python ライブラリにはすぐに使えるソリューションが存在しますか?

ありがとう!

4

2 に答える 2

1

FreeBSD ではps、出力にコマンド ラインを表示します。したがって、Python スクリプトの場合、これはインタープリターの名前の後にスクリプトの名前が続きます。どちらも完全なパスまたは単なるプログラム名にすることができます。

したがって、次のようなことができます。

import subprocess
import sys

scriptname  = 'foo'
procs = subprocess.check_output(['ps', '-xa']).splitlines()
count = len([l for l in procs if 'python' in l and scriptname in l])
if count > 3:
    sys.exit()
于 2013-10-05T22:00:01.827 に答える
0

これはcronに関する質問の一部には答えていないため、問題は解決しませんが、プロセスを処理する適切な方法は、pythonのマルチプロセッシングモジュールを使用するか、サブプロセスを使用することだと思いますpython の fork() と waitpid()の実装 (もちろん、代わりにスレッドを使用できますが、一部のプラットフォームではまだ複数のコアと CPU を利用できないため、興味がないかもしれません)。

これが特定の問題の説明に合わないことは理解していますが、それを念頭に置いて、それに応じて将来のプログラムを設計することができます.

于 2013-10-11T14:26:46.417 に答える