ワークキューとスレッドを使用するポートスキャンアプリケーションがあります。
単純なTCP接続を使用し、パケットが返されるのを待つのに多くの時間を費やします(最大0.5秒)。したがって、スレッドは完全に実行する必要はありません(つまり、前半はパケットを送信し、コンテキストスイッチを実行し、処理を実行し、ネットワークデータが待機しているスレッドに戻ります)。
sys.setcheckinterval
デフォルトの100(別のスレッドに切り替える前に最大100バイトコードを実行できるようにする)からを変更することで、パフォーマンスを向上させることができると思います。
しかし、スレッドまたは関数で実際に実行されているバイトコードの数がわからず、ブラインドで値を推測しているだけで、テストとテストへの依存は、測定可能な違いを示しています(実行されるコードの量が最小限であるため、これは困難です。単純です。ソケット接続、したがってネットワークジッターはsys.setcheckintervalを変更するよりも測定に影響を与える可能性があります。
したがって、sys.setcheckintervalを何に設定するかをよりインテリジェントに推測できるように、特定のコード実行(つまり、関数またはスレッドの実行の合計)に含まれるバイトコードの数を調べたいと思います。