PyCon JP 2024

プロダクションでのPython非同期ユースケース - Trio/Trio-Utilを中心に
2024-09-28 , 4F Track3

Pythonの非同期を利用されていますか?おそらく、市場での多くのユースケースはIOを多用するWebでの活用で、FastAPIやDjangoでasyncioを利用されている方も多いのではないでしょうか。今回のトークでは、asyncioと同時期にリリースされ「structured concurrency」という概念に強く影響を受けた Python非同期のサードパーティライブラリ「Trio」について、asyncioとの比較を交えお話しします。

asyncio以外のpython非同期って何?anyioってとは?なぜTrioを選択したのか、にお答えします。世界的に見ても稀有なTrioをプロダクションで利用している事例を中心に、実際のコードを交えTrioとasyncioの比較をしながら、ユースケースをご紹介します。


詳細

Python の非同期の歴史は非常に古く、1999年のPython1.5.2標準ライブラリasyncoreからアイディアははじまり、そこから、Twisted, Tornado, CurioといったサードパーティのライブラリがPython非同期のマイルストーンとなり、Python3.4標準ライブラリasyncioが追加され、2024年現在さらなる進化を遂げています。

おそらく、市場での多くのユースケースはIOを多用するWebでの活用で、FastAPIやDjangoでasyncioを利用されている方も多いのではないでしょうか?今回のトークでは、asyncioと同時期にリリースされ「structured concurrency」という概念に強く影響を受けた Python非同期のサードパーティライブラリ「Trio」について、asyncioとの比較を交え紹介します。

anyioって何?なぜTrioを選択したのか。世界的に見ても稀有なTrioをプロダクションで利用している事例を中心に、実際のコードを交えTrioとasyncioの比較をしながら、ユースケースをご紹介します。

予定稿

  • 導入(5min)
  • なぜTrioを採用したのか(10min)
  • ロボット開発における意思決定エンジン
  • プロダクトの価値を最大化するための手段
  • Trioとasyncioのコードを交えた比較
  • Trioでの「structured concurrency」
  • APIの比較
  • Trio-utilの利点
  • Python非同期のこれから
  • anyioとGlobal Backend
  • sub-interpreters や free threadingとの協業

想定する参加者

  • Pythonの基本的な構文がわかる方
  • Python非同期を使ってみたい方
  • (nice to have) pythonまたは他の言語で非同期を触ったことがある方

聴衆が獲れるもの

  • ロボットでのPython 活用事例
  • Python非同期に関する理解
  • Python 非同期で何を選択するかの考慮

Why did you choose this topic?

Python3.11でのasyncio.TaskGroup()とTrioのプロダクションでの利用を通じ、「structured concurrency」の重要性を学びました。これにより、非同期タスクの管理がより直感的で安全になります。Trioはこの概念を取り入れたライブラリであり、その実際のユースケースを紹介することで、参加者に新たな視点と実践的な知識を提供できると考えました。

このトークを通じて、Pythonの非同期プログラミングの歴史と進化を振り返りながら、Trioの特性と利点、asyncioとの比較の具体的なコード例を交えて紹介し、参加者に実践的な知識と新たな視点を提供できることを期待しています。

Knowledges and know-how the audience can get from your talk
  • Trioとasyncioの違いと「structured concurrency」の概念
  • Trioを用いたプロダクションユースケースの具体例
  • 違いを通じて得られる実践的な知識と新たな視点
Prior knowledges speakers assume the audience to have
  • Pythonの基本的な構文がわかる方
  • Python非同期を使ってみたい方
  • (nice to have) pythonまたは他の言語で非同期を触ったことがある方
Audience experiment

Beginner

Language of presentation

日本語

Language of presentation material

日本語

See also: プロダクションでのPython非同期ユースケース - Trio/Trio-Utilを中心に

GROOVE X株式会社所属。Pythonを中心としたWebシステム開発にフルスタックエンジニアとして従事。現職にて、愛する力をはぐくむ家族型ロボット「Lovot(らぼっと)」の意思決定エンジンの開発を行う。PyCon JP、DjangoCongress JP、EuroPython、PyConUSなどにて登壇。コミュニティ活動として、ギークラボ長野の運営に参加。ビールとキャンプが好き。