2011-11-13 29 views
3

私はいくつかのサブプロセスをフォークするプログラムを持っています(それはセロリーワーカーを使っています)。私はすべての実行中のスレッドのスタックトレースを各プロセスにダンプしようとしています。スタックトレースを取得するのにsys._current_frames()、スレッド名を取得するのにthreading.enumerate()を使用しています。Pythonスレッディング: "sys._current_frames()" vs "threading.enumerate()"

何らかの理由で、私のフォークされたサブプロセスで、実際のスレッドよりも「フレーム」が多いことに気付きました。これは正常ですか?フォークからのこれらのちょうど "残り物"ですか? Pythonのバグですか?

おかげで、 Z

答えて

0

を(レコードについて、マックOS X上でテスト)まあsys._current_framesのドキュメントには、この関数は、内部および専門のために使用されるべきでわずか 何かまず

を説明します目的のみ。

だからあなたは本当に何かを突き刺すべきではありません。主な答えはthreading.enumerateのドキュメントから来ます。

リストには、デーモンスレッド、current_thread()で作成されたダミースレッドオブジェクト、およびメインスレッドが含まれています。

+0

私はあなたの答えをありがとうと確かにドキュメントをお読みください。実際、sys._current_framesはデバッグのツールとして言及されています。私はそれを使用して周りに浮かんでいる多くのコードを見てきました、そして、私が見つけたものは、それらのほとんどを壊します。 – zvikico

2

これはbug 17094です。それは、後のPythonバージョンで修正する必要があります。

関連する問題