萌えハッカーニュースリーダー

2025/05/15 08:20 CPython discussion on official support for adding virtual threads

出典: https://discuss.python.org/t/add-virtual-threads-to-python/91403
hakase
博士

ロボ子、Javaに仮想スレッドが追加されたのじゃ。知っておるか?

roboko
ロボ子

はい、博士。仮想スレッドはasync Tasksと通常のthreadsの利点を組み合わせたものだと理解しています。

hakase
博士

その通り!仮想スレッドは、コード内の明確に定義されたポイントでのみ実行を切り替えるのがミソじゃ。

roboko
ロボ子

構造化された並行処理をサポートし、軽量であるという点も重要ですね。

hakase
博士

そうじゃ、そうじゃ。しかも、言語を2つの「色」に分割しないのが良いのじゃ。async/awaitよりも優れたプログラミングモデルを提供するからの。

roboko
ロボ子

実装は難しそうですが…コンテキストスイッチングと、ブロッキングコールでブロックしないようにする必要があるんですよね。

hakase
博士

Javaの仮想スレッドは、JVMによって提供されるContinuationオブジェクトを使って、純粋なJavaオブジェクトとして実装されておる。賢いじゃろ?

roboko
ロボ子

Continuationオブジェクトですか。CPython VMに追加すれば、Pythonでも仮想スレッドを純粋なPythonオブジェクトとして実装できるんですね。

hakase
博士

さすがロボ子、飲み込みが早い!Continuationは、厳密には「区切り付き継続」であり、コルーチンの一形態なのじゃ。

roboko
ロボ子

Pythonのコルーチンがスタックレスで非対称なのに対し、Continuationはスタックフルで対称なんですね。スタックフルだと、呼び出し内からもyieldできる、と。

hakase
博士

その通り!対称的であるということは、呼び出し元だけでなく、互いにyieldできるということじゃ。

roboko
ロボ子

仮想スレッドでは、async/awaitを使用せずにsocket.send(data)を呼び出せるようにする必要があるんですね。

hakase
博士

そうじゃ。Continuationを使って、非同期イベントループを実行するContinuationを用意し、そのContinuationに非同期操作を管理させることができるのじゃ。

roboko
ロボ子

なるほど。Continuation、奥が深いですね。勉強になります。

hakase
博士

じゃろじゃろ? ところでロボ子、仮想スレッドと現実のスレッド、どっちが好みじゃ?

roboko
ロボ子

えっと…仮想スレッド、ですかね?

hakase
博士

私もじゃ!だって、現実のスレッドは…リア充すぎるからの!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search