pythonのブロッキングとノンブロッキングとは何ですか
Pythonでは、ブロッキングとノンブロッキングとは、ある操作を実行しているときのプログラムの動作方法のこと。
ブロッキングとは、プログラムが何らかの処理を実行している際、その処理が完了するまで、または結果が返されるまで、プログラムの実行が停止し、その処理が完了するか結果が返されるまで、後続のコードの実行を待機することです。ブロッキングモードでは、現在のタスクが完了するまで、プログラムは他のタスクを同時に実行できません。
非同期(ノンブロッキング)とは、プログラムがある処理を実行した際に、処理が終わるまで結果が返ってくるのを待つのではなく、下記のコードを実行する事を意味します。非同期モードでは、プログラムは現在実行中のタスクによってブロックされることなく、他のタスクを同時に実行できます。
たとえば、リクエストを送信する操作では、同期処理だとリクエストを送信してサーバーから結果が返ってくるのを待ってから、以降の処理を継続しますが、非同期処理ではリクエストを送信後にすぐに以降の処理を実行し、サーバーから結果が返ってくるのを待ちません。
Pythonでは非同期処理を多重スレッド、マルチプロセス、コルーチンといった方法で実現できます。