OSS まとめてみました!

個人的に面白いと思ったオープンソースソフトウェア(OSS)をまとめてみました!

MENU

より速い Python コードコンパイラを探しているのなら!「Pycom」

概要

近頃は Python を使用してスクリプトを作成して様々な自動化やサーバー処理、機械学習などをされている方が多いかと思います。

Python はとてもシンプルで使いやすい反面、実行速度が遅いということが巷では言われていますよね。

そんな中、Python の実行速度を高速化するコードコンパイラGitHub 上で発見しましたので、ご紹介しようと思います。

今回紹介する OSS は、実質的な Python コードのコンパイラで、C++ で作成された「Pycom」になります。

Pycom」は Python の実行速度高速化を目的として作成された OSS コードコンパイラで、以下の処理などを得意としているそうです。

反復回数の多いループ:

for i in range(1, 1000001):
    if i % 3 == 0:
        print(i)
def is_prime(n):
    if n == 1:
        return 0
    for i in range(2, n):
        if n%i == 0:
            return 0

    return 1

def main():
    total = 0
    for i in range(1, 101):
        total += is_prime(i)

    print(total)

ベンチマーク結果:

上記のベンチマークを見ると、「Pycom」は CPython と比較しても相当高速化が行えていますね!

それでは早速「Pycom」のインストール方法などについて見ていきましょう!

利用手順

前提

  • Python のバージョンは 3.10 以上が必要
    • colorama モジュールをインストールする際に必要

インストール方法としては、GitHubリポジトリをクローンすることで利用することができます。

以下のコマンドを利用してインストールください。

git clone https://github.com/Omyyyy/pycom.git
cd pycom 
pip install -r requirements.txt
pip install -e .

なお、pip install -e . コマンドで作成される pycom.py.egg-info フォルダーには触れないよう注意してください、と但し書きがあるのでご注意ください。

インストール後は以下のように使用することができます(インストール作業後のディレクトリにいることを想定)。

cd src/pycom
pycom {実行したい Python スクリプト}

これにより、Python スクリプトを Pycom を利用して実行することができます。

使用感

実際に自分もインストールして使用してみました。

インストールしてしまえば、使い方は Python と同じ感じで利用できるので特にここで言及することもないですが、同じ使い方ができるという点はいいですね。

まとめ

今回は Python の実行速度高速化を目的として作成された OSS コードコンパイラPycom」を紹介しました。

CPython と比較しても、実行速度は最高 20~30 倍も高速化されるということなので、これまで時間のかかっていた処理をこなす際は、こちらの「Pycom」の利用を検討されてみてはいかがでしょうか。

ただ、「Pycom」はまだまだ開発段階ということですべての Python バージョンとすべての Python 機能はまだ網羅されていないとあります。

  • サポートされている機能
    • Pythonifelseforwhile など
    • f'' 文字列
    • 組み込み関数
    • 一部の数学ライブラリ関数
    • リスト内法表記
    • Python スタイルの任意の大きな整数、など
  • サポートされていない機能
    • 特定のブロックを Python で書く方法(1 行で if ... else を書く記法など)
    • 複数行の文字列リテラル
    • stdlib に含まれる多くのライブラリ
    • クラス
    • throwfinally キーワード
    • 複数のデータ型を含むリスト、など

上記に注意しながら今後の開発に期待し、ぜひうまく活用していただけたらと思います!

ライセンス

MIT License

リンク

github.com