0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python トレンド週刊第8号:Python 3.13 ではインタープリターの 50% 高速化を計画しています!

Posted at

この記事は2023年6月24日で公開された中国語の記事「Python潮流周刊#8:Python 3.13 计划将解释器提速 50%!」の日本語訳です。主に LLM によって翻訳され、手修正で校正されていますが、もし不自然の点が気づいたら、「記事の改善」機能で、編集リクエストをいただけるとありがたいです。

こちらから最新号まで購読できます(英語のみですので、ご了承ください。)

こんにちは、Python エンジニアのネコです。ここでは毎週、参考になる Python や汎用技術に関する情報をまとめています。一部は英語の内容も含まれており、小見出しにその旨を記載しています。(今回のタイトルは共有項目の一つから取ったもので、すべての内容がそのテーマに関するわけではありませんのでご了承ください。)

この記事の初出はここです。

🦄記事&チュートリアル

1、Python 3.13 のリリース計画 (英語)

Faster CPython プロジェクトが 3.13 バージョンに関する最新の計画を発表しました。今回のパフォーマンス目標は、インタプリタの実行時間を 50% 削減することです。主な取り組みとして、以下の3つが含まれます:Tier 2 オプティマイザ (tier 2 optimizer)、サブインタプリタの有効化 (PEP-554)、メモリ管理。

2、なぜ Numpy の並列処理が重要なのか? (英語)

Numpy は科学計算やデータ分析において最も重要なライブラリの一つであり、並列処理はその性能向上に欠かせない手法です。この記事では、Numpy で並列性を実現できる5つのケースとその手法を紹介しています:Numpy 配列データの読み込み/保存、数学関数の高速計算、配列の効率的な初期化、配列要素ごとの数学演算の並列実行、プロセス間での効率的な Numpy 配列データ共有。

3、100 行未満の Rust で Python を 100 倍高速化 (英語)

この記事では、パフォーマンスに問題のある Python ライブラリを Rust で書き直し、3回の最適化を実施した結果、性能を 100 倍向上させることに成功しました。手法として py-spy ライブラリを使用してフレームグラフを生成し、コードのボトルネックを分析して最適化の根拠として活用しています。最適化前後のフレームグラフを比較すると、その違いが明確に見て取れます。

py-spy フレームグラフ

4、Python プロジェクトを Rust に移植する (英語)

この記事では、「一度で完了させる移植方法」にはいくつかの問題点があることを指摘し、その代わりとして「段階的な移植手法」を提案しています。具体的なコード例も示されています。

5、Pythonic なライブラリ API を設計する (英語)

Pythonic な API をどのように設計すべきか?設計における手法と基本原則とは何か?この記事では、コード構造、変数命名、エラー処理、バージョン管理、型アノテーションなどの観点から、非常に詳細に解説しています。記事は長文ですが、最後に 18 つの重要なポイントをまとめています。

6、型付き Python をコンパイルする (英語)

Python はすでに型ヒントをサポートしていますが、Python コードをネイティブコードにコンパイルしてパフォーマンスを向上させることは可能でしょうか?型ヒントによってある程度のパフォーマンス最適化が可能ではありますが、Python の動的な性質と柔軟性の高さから、静的解析とコンパイルが非常に困難となっています。そのため、現時点では Python コードをネイティブコードにコンパイルしてパフォーマンスを向上させる手法は確立されていません。

7、pytest のフィクスチャは魔法のように便利! (英語)

フィクスチャ(fixture)はテスト実行前に必要なデータを設定・準備する仕組みであり、テストデータとテストコードを分離することができます。この記事では、pytest におけるフィクスチャの基本的な使用方法と、Django プロジェクトとの組み合わせた利用方法について解説しています。

8、Python 辞書の実装原理を探る (英語)

これはシリーズ記事で、可視化によるデバッグ手法を使って Python の辞書の実装原理を探ることを可能にしています。この記事では、ハッシュテーブルを使って辞書を実装する方法と、ハッシュ衝突を解決する方法について解説しています。

リスト内検索の可視化

9、Flask vs Django:最適な Python Web フレームワークの選び方 (英語)

Python の代表的な2つの Web フレームワークである Flask と Django について、この記事ではそれらの主要機能、長所と短所、人気プラグイン、使用場面などを詳細に比較しています。これにより、読者がプロジェクトに最適なフレームワークを選択するための参考情報を提供します。

10、なぜ「シンプルに」pyenv、poetry、anaconda を使うように勧めないのか (英語)

この記事の要点は、基本的な Python パッケージ管理のプロセスを紹介し、依存関係と必要条件を最小限に抑えることで、大多数のユーザーが直面するパッケージング問題を解決することです。文中では一般的なパッケージングの問題点を列挙し、その解決策を提示しています。また、homebrew、pyenv、anaconda、poetry といった一般的なパッケージングツールの欠点についても指摘しています。

11、PyScript における Asyncio (英語)

この記事では、PyScript/Pyodide で async/await/asyncio を使用して並行処理コードを記述する方法について解説しています。さらに、Pyodide.Webloop の実装についても紹介しており、この実装により async/await をブラウザのイベントループと連携して使用できるようになります。

12、スレッドの問題とその解決策 (英語)

前回の週刊 の最初の記事で紹介した3つの記事は暗黙的な非同期処理を支持する傾向がありましたが、読者から明示的な非同期処理を支持する視点も紹介してほしいとの要望がありました。この記事の要点は:スレッドはコードの局所的な理解を困難にし、この局所的な理解はソフトウェア開発において最も重要な要素の一つであるという点です。そのため、スレッドの使用を避け、コールバック、Promise、コルーチンなどの非同期プログラミングモデルを使用すべきだと主張しています。また、暗黙的なコルーチンの使用リスクについても言及しており、それらがスレッドと同じ問題を引き起こす可能性があることを指摘しています。(投稿者:Plutonium)

🐿️プロジェクト&リソース

1、PyQt-Fluent-Widgets:PyQt/PySide ベースの Fluent Design スタイルUIコンポーネントライブラリ

現在、オープンソースであり、美観と実用性を兼ね備えた PyQt/PySide コンポーネントライブラリは非常に少ない状況です。そこで作者は WinUI3 のデザイン仕様に基づいて、この Fluent Design スタイルのコンポーネントライブラリを開発しました。ライト/ダークテーマのシームレスな切り替えとカスタムテーマ色に対応し、PyQt5/PyQt6/PySide2/PySide6 をサポートしています。QtDesigner と組み合わせることで、美しいUIを迅速に設計することができます。(投稿者:shokokawaii)

2、pyvibe:Python でスタイリングされた HTML ページを生成する (英語)

PyVibe は Web ページ作成のための Python ライブラリで、Python 開発者がフロントエンドのページを迅速に構築し、UI 開発を簡略化することを目的としています。PyVibe は HTML 文字列を返すため、静的ページ、Flask 関数、Pyodide による動的クライアントレンダリングなど、様々な用途に利用できます。

PyVibe を使用した見出しとテキスト生成の例

3、pynecone:純粋 Python の Web フレームワーク (英語)

Pynecone は 2022 年 12 月に公開され、9K スターを獲得するなど非常に人気を集めています。これは Web アプリケーションの構築とデプロイのためのフルスタックフレームワークで、50以上の組み込みコンポーネントを提供しています。複雑なレイアウトの作成や CSS の全機能を活用したスタイリングが可能です。

Pynecone のドキュメントとデモ

4、 pytudes:コンパクトで本質を突く Python プログラミング演習 (英語)

このプロジェクトには、短いながらも挑戦的なプロジェクトコードが含まれています。 「Advent of Code」 の各年のプログラミングチャレンジ課題、 「The Riddler」 の数学パズルシリーズ、文字パズル、確率問題など多岐にわたります。さらに、Python を使ってあらゆる数独を解く方法や、Lisp インタプリタの実装など、より高度な内容も扱っています。

5、 recognize-anything:Recognize Anything モデルおよび Tag2Text モデル (英語)

Recognize Anything Model (RAM) は画像タグ付けモデルで、幅広い一般的なカテゴリを高精度に認識することができます。Tag2Text はタグをガイドとした視覚言語モデル (VLM) で、画像キャプション生成、画像検索、タグ付けなどの機能をサポートします。このプロジェクトは、これら2つの先進的なモデルのコード実装を提供しています。

異なるモデルの物体認識性能を比較

6、 ask-multiple-pdfs:複数 PDF 対応の LangChain チャットプログラム (英語)

自然言語で複数の PDF ファイルと同時に対話することを可能にします。本プロジェクトでは Streamlit を採用しており、ブラウザ上で直感的なユーザーインターフェースを提供します。

システム構成図

7、 DeepKE:知識グラフの抽出と構築のためのオープンツールキット (英語)

DeepKE は、知識グラフ構築向けに NER ・関係・属性抽出をサポートするオープンソースツール。中国語スキーマ対応、低リソースやマルチモーダルにも対応。ドキュメント・チュートリアル・デモあり。

システムアーキテクチャ

8、 awesome-DevOps:厳選 DevOps プラットフォーム、ツール、プラクティス、リソースリスト (英語)

「awesome」シリーズのリポジトリで、DevOps に関する様々な分野を網羅しています。各種プラットフォーム、自動化ツール、CI/CD、コード管理、Web サーバ、データベース、監視ツール、ゲートウェイ、カオスエンジニアリング (Chaos Engineering) などを含みます。

🥂ディスカッション&トピック

1、 Hacker News:Our Plan for Python 3.13 (英語)

Python 3.13 バージョンの開発計画に関する注目の議論。予想どおり、ほとんどのコメントは GIL を中心に展開されており、賛否両論があります。

2、 あなたの好きなプログラミング言語で、エレガントなコードは何ですか? (英語)

これも Hacker News 上の投稿で、プログラミング言語自体に関する議論を引き起こしただけでなく、様々なプログラミング言語環境における優れたプロジェクトについても話題になりました。興味深いことに、Python に関する 3 つのコメントがすべて、前回の記事で紹介した pytudes プロジェクトを推薦していました!

🐼本週刊について

Python トレンド週刊では、国内外 200 以上の情報源から注目すべき記事、チュートリアル、オープンソースプロジェクト、ソフトウェアツール、ポッドキャスト、動画、話題のトピックなどを厳選してお届けします。本週刊のビジョンは、すべての読者が Python 技術を高めるとともに、本業や副業の収入アップにつなげられるようサポートすることです。

コンテンツの作成には多くの時間と労力がかかっています。もしこの記事が少しでも参考になったと感じたら、気軽にサポートコーヒーをごちそう などをいただけると嬉しいです!この週刊が気に入った方は、ぜひ必要としている仲間にもシェアして、より多くの方に役立ててもらえたら嬉しいです〜

購読方法:Python猫 (Wechatのグループ参加可)| RSSメールマガジン | Github | Telegram | Twitter

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?