概要
普段みなさんは Python を使用してプログラムなどを作成していますでしょうか?
私は個人的にアプリを開発したり、画像処理などにおいて Python を利用して大量の処理を実行していたことがあります。
Python はアプリを開発したり画像処理などに使われたり、はたまた 機械学習や AI にも使われるとても大活躍プログラム言語化と思います。
ただこちらの Python ですが、実行速度が遅いことでも有名で速さが求められるプログラムだったりアプリケーションを作成する場合、別の言語にとって代わられてしまうことが多々あります。
そんな中、Python コードの実行速度を上げることができる OSS が話題になっていたため、ご紹介します。
今回ご紹介するのは、Python のような高水準言語でも C/C++ のような低水準言語のような高速性を実現することができる Python ベースのコンパイラ「Codon」になります。
「Codon」はランタイムオーバーヘッドなしで Python コードをコンパイルする高性能な Python コンパイラになります。
こちらの OSS を利用することで、シングルスレッドで動作させていた Python 実行速度が 10 倍から 100 倍以上になると公式ドキュメントに記載されていました。
さらに「Codon」はマルチスレッドをサポートしているため、シングルスレッドの何倍もさらに高速化することができるそうです!!
それではもう少し詳細について見ていきましょう!
目次
特徴
「Codon」の大きな特徴としては、Python コードを実行する前に型チェックが行われるという点であると記載があります。
Python コンパイラであるため、Python コードをネイティブのマシンコードに変換してくれますが、その際に Python コード全体のオーバーヘッドを回避してくれるそうです。
さらに素晴らしいことに、Python の構文のほぼすべてをサポートしていると記載がありました!
ただし、「Codon」は現在も絶賛開発中であるため Python の構文のすべてをサポートしているわけではないともあるので、エラーが出た際は公式ドキュメントを参考にしながら対応ください。
利用手順
Linux (x86_64) および macOS (x86_64) 用のビルド済みバイナリは、以下のようにしてダウンロートしてインストールすることで利用可能となります。
/bin/bash -c "$(curl -fsSL https://exaloop.io/install.sh)"
または、以下のような方法でソースからビルドすることが可能です。
使用感
早速自分のほうでもこちらの「Codon」について、README にあるようにフィボナッチ数列を動かしてみます。
def fib(n): # n未満のフィボナッチ数列を全てprintします a, b = 0, 1 while a < n: print(a, end=' ') a, b = b, a+b print() fib(1000)
上記の Python コードを fib.py
とした際に、「Codon」を使ってコンパイル後に実行してみます。
codon run fib.py # 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
上記のように Python コードを実行することができました!
さらに -release
オプションをつけることで最適化したコンパイルを実行できます(ちなみに、オプションをつけない場合は debug 用にコンパイルされるそうです)。
codon run -release fib.py # 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
さらに -exe
で実行ファイルを出力することも可能だそうです。
この場合は fib
というファイルで実行ファイルが作成されます。
codon run -release -exe fib.py ./fib # 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
さらにさらに、-llvm
で LLVM IR ファイルをコンパイルすることができるそうです。
この場合は fib.ll
という名前でファイルが作成されます。
codon build -release -llvm fib.py # outputs file fib.ll
こちらで紹介した内容はほんの一部ですので、もっと詳細について確認したい場合は公式ドキュメントを参照ください!
まとめ
今回は Python のような高水準言語でも C/C++ のような低水準言語のような高速性を実現することができる Python ベースのコンパイラ「Codon」についてご紹介しました。
こちらの OSS を利用することでシングルスレッドで動作させていた Python 実行速度が 10 倍から 100 倍以上になるということなので、実行速度に困っていた方たちにとってはとても朗報かと思います!
Python を日々使用されている方や Python の実行速度に悩みを抱えている方は、ぜひ一度こちらの「Codon」を試してみてはいかがでしょうか。
実行速度がこれまで以上に早くなった Python コードに驚くかもしれません!!
ライセンス
ただし、2025 年 11 月 1 日には Apache License, Version 2.0 に移行されます。