Python 3.15の遅延インポートでCLIが最大4倍高速化、flake8-lazyで簡単適用
Working to Make Python Lazy
Python 3.15で導入された遅延インポート(PEP 810)により、`--help`などのCLI操作が大幅に高速化できます。しかし、この機能を活用するにはライブラリ側の対応が必要です。そこで開発されたflake8-lazyは、`__lazy_modules__`の追加を自動化し、`uvx flake8-lazy --apply=list`を実行するだけでコードを最適化します。実際にcibuildwheelでは3〜4倍の速度向上を達成。本記事では、遅延インポートの仕組み、ツールの使い方、AIを活用した開発体験を紹介します。
uvx flake8-lazy --apply=list を実行するだけで、Python 3.15でコードが魔法のように高速化します!
HNでの議論
17- mhashemi
遅延インポートには懐疑的なところがあるが、特にscipyはメモリを大量に消費するので、最近はそこから小さなユーティリティを切り出してベンダリングすることが増えている。優れた遅延インポートがあれば大きな助けになるだろう。
- nxtfari
良い機能ではあるが、既存の概念に対する小さな変更のために新しいキーワードが追加されるのは本当に嫌だ。まったく不要だと思う。
- dataflow
> 例えば、このパターンは遅延化できない: try: import numpy; except ModuleNotFoundError: ...
待って、それはまずい気がする。こういったモジュール(特にnumba)は、まさにインポートを遅延させたいものだ。なぜインポート時に存在を確認する方法を提供しないのか?その場合、存在しない場合をどう処理すればいいのだ?