1

スタックレス Python で記述された私のサーバーでは、CPU 使用率が 5 ~ 10 秒間急上昇することがあります。これは散発的に発生するため、追跡するのに苦労しています。

私は cProfile を使用してこれらのスパイクがどこから来ているかを特定しようとしましたが、cProfile は関数ごとにどこで時間が費やされているかの全体像を示します。私が本当に知りたいのは、CPU スパイクが単一のタスクレットで発生する何らかの処理 (および他のタスクレットの停止) によるものなのか、それとも多くの処理を実行している複数のタスクレットがあるのか​​ (つまり、それぞれがアクティブになるにつれて、それぞれが実行されているかどうか) です。多くの作業)。

タイミング コードを追加できるように、Stackless Python のスケジューラにフックする便利な方法はありますか? つまり、タスクレットがアクティブになったときと非アクティブになったときに呼び出される、フックできる関数はありますか?

4

1 に答える 1

0

タスクレットがブロック/再開するときにフックする明示的な関数は見つかりませんでしたが、Channel.receive() は通常、ブロック/再開が発生したときであるため、その発生のすべてにフックしました。

于 2011-12-28T18:56:00.243 に答える