32

それぞれ 10 スレッドの 2 つのスレッド プールを使用して API からデータを取得するスクリプトを作成しました。スレッド プールは、このコードを ActiveState に実装します。各スレッド プールは、新しいエントリについてPubSubを介して Redis データベースを監視しています。新しいエントリが公開されると、Python は Python のSubprocess.POpenを使用する関数にデータを渡し、PHP シェルを実行して API を呼び出す実際の作業を行います。

PHP シェルを起動するこのシステムは、私の PHP Web アプリの機能に必要なので、Python で PHP シェルを起動することは避けられません。

このスクリプトは、Linux サーバーでのみ実行されます。

アプリケーションのスレッドのナイスネス(スケジューリングの優先度)を制御するにはどうすればよいですか?

編集:

Python で個々のスレッドのスケジューリング優先度を制御することはできないようです。優先度を制御するために、python ソリューション、または少なくともスクリプトと一緒に実行できる UNIX コマンドはありますか?

編集2:

まあ、それを処理するPythonの方法を見つけることにはなりませんでした。次のように、スクリプトをナイスで実行しています。

nice -n 19 python MyScript.py
4

5 に答える 5

4

かなり時間が経ちましたが、最近この質問に出くわし、別のオプションを追加すると便利だと思いました。

threading2を見てください。これは、デフォルトのスレッド化モジュールのドロップイン置換および拡張であり、優先度とアフィニティをサポートし ています。

于 2015-06-20T12:13:46.087 に答える
1

別の関連する質問でのこの回答がこのシナリオで役立つかどうか疑問に思いましたか?(リンク

すでにSubprocess.POpenを使用してPHPスクリプトを起動しているので、「preexec_fn」と事前定義された関数、またはラムダ関数(上記のリンクされた回答に示されている)のいずれかを使用して、それぞれの適切なレベルを設定できることに気付きます。 PHPスレッドを起動しましたか?

于 2012-08-08T22:59:45.063 に答える