商品等のご購入はAmazonがおすすめ

Pythonのお手軽な高速化方法 part1

プログラミング

Pythonには高速化方法がいくつかあります。

組み込みのモジュールやパッケージなんかは高速なプログラミング言語で作られていますし、サードパーティ製のものも大抵高速な言語で作られています。

一般的な高速化の例としては

  • リスト内包表記を使う
  • リスト内検索を行う場合可能ならsetを使う
  • 高速なライブラリ(NumPyなど)を使う
  • 並列化する
  • GPUを使う
  • 互換性のある高速な処理系(PyPy, Cython, Codonなど)を使う
  • pickleを使う
  • アルゴリズムを見直す

などが挙げられます。

今回はこれらの中でも特にお手軽な高速化方法を紹介したいと思います。

アルゴリズム見直しによる高速化

たとえば総和を求めるプログラムを考えてみます。

何も考えずに10000000までの整数をforループで1回ずつ足していくと、

total = 0
for i in range(1, limit + 1):
total += i
print(total)
50000005000000
elapsed : 459.067 ms

これだけ時間がかかります。これを総和の公式で計算すると

total = limit * (limit + 1) // 2
print(total)
50000005000000
elapsed : 26.000 μs

約17000倍高速になりました。

極端な例ですが、余計な計算はしないほうがいいという良い例だと思います。

Pythonコンパイラを使って高速化

スクリプト言語であるPythonをコンパイル型の高速な言語に変換してしまおうというものです。

お手軽に高速化できる反面、Python独自の機能は使えないという本末転倒なもので、個人的にあまり好きではありません。

Numbaで高速化

使い方は簡単で、Numbaをインストールしてnumba.jitデコレータをコンパイルしたい関数に付けるだけです。

pip install numba
from numba import jit
@jit
def for_loop():
    total = 0
    for i in range(1, limit + 1):
        total += i
    print(total)
50000005000000
elapsed : 265.959 ms

Codonで高速化

以前紹介したCodonでももちろん高速化可能です。

「windows codon」でのリーチ数がやけに多いので、今回は擬似的にWindowsからCodonを使用する方法を紹介したいと思います。

WSL2をインストール

PowerShellまたはコマンドプロンプトを管理者として開きます。

+S」などから検索ウィンドウを開き「Powershell」と入力し、「管理者として実行する」をクリックします。

powershell検索画面

そしたら以下の内容をコピペしてエンターを押します。

wsl --install

再起動を促されたら再起動してください。

うまく動かないときは検索ウィンドウ等から「Windowsの機能の有効化または無効化」を開き、「Linux用Windowsサブシステム」「Windowsハイパーバイザープラットフォーム」「仮想マシンプラットフォーム」にチェックが入っていることを確認してください。

windowsの機能の有効化または無効化

これでもうまくいかないときはBIOS設定から「Intel Virtualization Technology (VT-x)」を探してい「Enabled」にしたり、管理者権限のPowerShellかコマンドプロンプトから以下のコマンドを実行してみてください。

bcdedit /set hypervisorlaunchtype auto

うまくいけばUbuntuがインストールされると思います。

初回起動時にユーザー名とパスワードを入力させられると思うので、入力してください。

Codonをインストール

下記記事などを参考にインストールしてください。

Visual Studio Codeをインストール

Download Visual Studio Code - Mac, Linux, Windows
Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio C...

ここからインストーラーをダウンロードし、インストールしてください。

拡張機能のインストール

拡張機能の「Remote Development」をインストールしてください。

Linux側からVisual Studio Codeを開く

上記でインストールしたLinux(デフォルトではUbuntu)を起動してください。

ubuntu.exe

起動したら起動したLinux上で以下のコマンドを実行してください。

「code」がVisual Studio Codeの実行コマンドで、その後の「.」は今いるフォルダを意味します。

「.」の部分は開きたいフォルダの名前に変更してもOKです。

code .
open vscode on wsl

何かしらのログが表示されてVisual Studio Codeが起動します。

vscode on wsl

開いたLinux上のファイルが表示され、「Ctrl + @」でLinuxのターミナルが開けば成功です。

これで擬似的にWindows上からCodonが使用できます。

codon running vscode

正式なWindows対応

結論から言うと期待しないほうがいいです。

codon's branches

branch一覧には一応Windowsブランチがありますが、開発は進んでいません。

まとめ

長くなってしまったので今回はここで〆ます。

気が向いたら他の高速化方法もいつかご紹介しようと思います。

コメント

タイトルとURLをコピーしました