私は "私はそれを理解したい"という質問があります。 まず、私はUbuntuでPython 2.6.5を使用しています。pythonスレッドとソケット
Pythonの(スレッドモジュール経由で)スレッドは「スレッド」のみであり、特定の時間内に各スレッドからのコードブロックを実行するようにGILに指示します。実際には実際のスレッドではありません。
したがって、私は1つのスレッドにブロックソケットがあり、今は5秒間データを送信してスレッドをブロックしています。私はスレッドをブロックしている1つのCコマンド(sock.send
)であるため、すべてのプログラムをブロックすると予想しました。しかし、私は、メインスレッドが引き続き実行されていることに驚いていました。 問題は、GILがsendのようなブロックコマンドに達した後に、残りのコードをどのように継続して実行できるかです。ここで本当のスレッドを使う必要はありませんか?
ありがとうございました。
私はxソケット(または他のi/oオブジェクト)があり、それらのすべてがバックグラウンド(サーバ)で処理されていると、2つの実際のスレッドがあることを意味します:GILとGILの外、ブロックされ、他もブロックされますか? または私は本当のスレッドを持っていますか? (私が「xスレッドを持っている」とは、同じ時間にx個のスレッドがあっても1秒未満であっても) – RoeeK
よく、テストの後に答えがx実際のスレッドだと思います。物事がより明確になりました。 – RoeeK