プログラムを実行して、このプロセス->nプロセス->nプロセスのようなスポーンを作成したい
マルチプロセッシングを使用して第2レベルのスポーンプロセスを実行できますか?Python2.6のmultiprocessinfモジュールを使用する
thnx
プログラムを実行して、このプロセス->nプロセス->nプロセスのようなスポーンを作成したい
マルチプロセッシングを使用して第2レベルのスポーンプロセスを実行できますか?Python2.6のmultiprocessinfモジュールを使用する
thnx
@vilalianの答えは正しいですが、簡潔です。もちろん、元の質問があいまいであった場合、これ以上の情報を提供することは困難です。
少し拡張するには、元のプログラムにnプロセスを生成させますが、元のプログラムとは少し異なり、(質問を理解していれば)nより多くのプロセスを生成する必要があります。これを達成するには、元のプロセスと同様のコードを実行させますが、それ以上の処理を行わずに、目の前のタスクを実行する新しいプログラム セットを生成するか、同じコード/エントリ ポイントを使用して、異なる引数を指定するだけです。 - 何かのようなもの
def main(level):
if level == 0:
do_work
else:
for i in range(n):
spawn_process_that_runs_main(level-1)
そしてそれを始めますlevel == 2
はい-しかし、昨日Pythonトランクにコミットした修正が必要になる問題が発生する可能性があります。バグhttp://bugs.python.org/issue5313を参照してください
ネストされた任意の深さでキューを介して通信する一連のプロセス プールとしてアプリを構築できます。ただし、(おそらく必要なコンテキストの切り替えが原因で) かなり早く毛むくじゃらになる可能性があります。
それは確かですが、それはアーランではありません。
マルチプロセッシングに関するドキュメントは非常に役に立ちます。
ここに (コメントに含めるには多すぎる)、フィードを更新するプログラムでスループットを向上させるために使用するコードをいくつか示します。フェッチする必要があるフィードをポーリングするプロセスが 1 つあります。その結果がキューに入れられ、4 つのワーカーのプロセス プールがそれらの結果を取得してフィードをフェッチし、その結果 (存在する場合) がプロセスのキューに入れられます。解析してキューに入れ、データベースに押し戻すプール。順番に実行すると、一部のサイトが応答するのに時間がかかるため、このプロセスは非常に遅くなり、ほとんどの場合、プロセスはインターネットからのデータを待っていて、1 つのコアしか使用しませんでした。このプロセスベースのモデルでは、実際にはデータベースを最も待機しているように見え、NIC はほとんどの場合飽和状態であり、4 つのコアすべてが実際に何かを実行しています。
できますよ。特に fork を使用して子プロセスを生成している場合、それらは完全に通常のプロセスとして機能します (親プロセスのように)。スレッド管理はかなり異なりますが、「第 2 レベル」のサブスレッドも使用できます。
2 レベルのスレッドを含むサンプル プログラムは通常使用されないため、プログラムを過度に複雑にしないように注意してください。