ホームページ >バックエンド開発 >Python チュートリアル >Pythonの実行速度を向上させる方法

Pythonの実行速度を向上させる方法

(*-*)浩
(*-*)浩オリジナル
2019-06-15 16:34:508461ブラウズ

今最も人気のある言語と言えば、Python を挙げなければなりません。ただし、Python は使いやすいですが、その速度は少し印象的です。 Python を C とほぼ同等の速度まで高速化する簡単な方法を使用するにはどうすればよいですか?

Pythonの実行速度を向上させる方法

今日はベビーナンバーバについてお話しましょう。読んで字のごとく、「numpy」か「numba」のどちらかです。 (推奨学習: Python ビデオ チュートリアル )

numba は、Python のジャストインタイム コンパイラであり、NumPy 配列と関数を使用するコードに最適です。ループも同様に。 Numba を使用する最も一般的な方法は、デコレーターのコレクションを使用する方法です。これを関数に適用して、Numba にコンパイルを指示できます。 Numba 装飾関数が呼び出されると、その関数は「ジャストインタイム」で実行できるようにマシンコードにコンパイルされ、コードのすべてまたは一部がネイティブのマシンコード速度で実行できるようになります。

コンピューティング プロジェクトに直面したときに、私たちが思いつく最も簡単な方法は、直接コーディングして、最終的に非常に長いプログラムを記述することです。その結果、一度何か問題が発生すると、問題を特定するのに多くの時間がかかることがよくあります。

この問題を解決する簡単な方法は、さまざまな関数を定義し、タスクを多くの小さな部分に分割することです。各関数はそれほど複雑ではなく、作成時にいつでも確認できるため、簡潔なメインプログラムで問題が発生した場合でも、問題の特定と解決が容易です。オブジェクト指向プログラミングの考え方は関数に基づいています。

関数を作成した後、デコレータを使用して関数をより強力にすることもできます。デコレータ自体は関数ですが、関数の関数であり、関数の機能を高めることが目的です。たとえば、まず現在時刻を出力する関数を定義し、次に時刻形式を指定する関数を定義し、後者の関数を前の関数に適用するのがデコレータであり、現在時刻を特定の形式で出力するために使用されます。

>Numba の利点

1. シンプルですが、多くの場合、たった 1 行のコードで驚くべきことが起こります;

2. これはループに奇跡的な効果をもたらし、多くの場合、科学で使用される Python の計算速度を制限するのはループです;

3. numpy、cmath などの一般的に使用される科学計算パッケージと互換性があります;

4. ufunc を作成できます;

5. 精度を確保するために、精度が自動的に調整されます。

numbaの使い方

上記で挙げたnumbaのメリットを一つずつ紹介していきます。最初に numba をインポートします

import numba as nb

コードを 1 行追加するだけで高速化でき、ループに奇跡的な効果があります

numba の組み込み関数はデコレータであるため、必要なのは@nb.jit() だけで簡単に始めることができます。例として合計関数を取り上げてみましょう。

# 用numba加速的求和函数@nb.jit()def nb_sum(a):
    Sum = 0
    for i in range(len(a)):
        Sum += a[i]
    return Sum# 没用numba加速的求和函数def py_sum(a):
    Sum = 0
    for i in range(len(a)):
        Sum += a[i]
    return Sum

速度をテストします。

import numpy as np
a = np.linspace(0,100,100) # 创建一个长度为100的数组

%timeit np.sum(a) # numpy自带的求和函数
%timeit sum(a) # python自带的求和函数
%timeit nb_sum(a) # numba加速的求和函数
%timeit py_sum(a) # 没加速的求和函数

Python 関連の技術記事の詳細については、Python チュートリアル 列にアクセスして学習してください。

以上がPythonの実行速度を向上させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。