ホームページ  >  記事  >  バックエンド開発  >  Python プログラムのパフォーマンスを向上させる 7 つの習慣

Python プログラムのパフォーマンスを向上させる 7 つの習慣

WBOY
WBOY転載
2023-04-16 18:01:03617ブラウズ

Python プログラムのパフォーマンスを向上させる 7 つの習慣

1. ローカル変数を使用する

メンテナンスを容易にし、パフォーマンスを向上させ、メモリを節約するために、グローバル変数の代わりにローカル変数を使用するようにしてください。

ローカル変数を使用して、ls = os.linesep などのモジュール名前空間内の変数を置き換えます。プログラムのパフォーマンスを向上させ、ローカル変数の検索を高速化できる一方で、短い識別子を使用して長いモジュール変数を置き換えて可読性を向上させることができます。

2. 関数呼び出しの数を減らす

オブジェクト タイプを判断するときは、 isinstance() を使用し、続いてオブジェクト タイプ ID (id())、オブジェクト値 ( type()) 比較は最悪です。

#判断变量num是否为整数类型
type(num) == type(0) #调用三次函数
type(num) is type(0) #身份比较
isinstance(num,(int)) #调用一次函数

繰り返し動作を避けるため、繰り返し動作の内容をパラメータとしてループ条件に入れないでください。

#每次循环都需要重新执行len(a)
while i < len(a):
statement
#len(a)仅执行一次
m = len(a)
while i < m:
statement

モジュール X で関数またはオブジェクト Y を使用する必要がある場合は、import X; X.Y の代わりに from X import Y を直接使用する必要があります。このようにして、Y を使用するときに 1 つのクエリを減らすことができます (インタプリタは、最初に X モジュールを見つけてから、X モジュールの辞書で Y を検索する必要がありません)。

3. 条件検索の代わりにマッピングを使用する

マッピング (dict など) の検索速度は、条件文 (if など) の検索速度よりもはるかに高速です。 )。 Python には select-case ステートメントもありません。

#if查找
if a == 1:
b = 10
elif a == 2:
b = 20
...
#dict查找,性能更优
d = {1:10,2:20,...}
b = d[a]

4. シーケンス要素の直接反復

シーケンス (str、リスト、タプルなど) の場合、シーケンス要素の直接反復は、インデックス付けより高速です。反復された要素。

a = [1,2,3]
#迭代元素
for item in a:
print(item)
#迭代索引
for i in range(len(a)):
 print(a[i])

5. ジェネレーター式を使用してリスト内包表記を置き換えます

リスト内包表記 (リスト内包表記) はリスト全体を生成するため、大規模な反復に悪影響を及ぼします。データ量。

ジェネレータ式はそうではなく、実際にはリストを作成しませんが、必要なときに値を生成するジェネレータ (遅延計算) を返します。これはメモリに優しいです。

#计算文件f的非空字符个数
#生成器表达式
l = sum([len(word) for line in f for word in line.split()])
#列表解析
l = sum(len(word) for line in f for word in line.split())

6. 最初にコンパイルしてから呼び出します

eval() 関数と exec() 関数を使用してコードを実行する場合は、コード オブジェクト (事前にcompile()関数を渡しておく(バイトコードにコンパイルされる)ことで、strを直接呼び出す代わりに、コンパイル処理を何度も繰り返すことを避け、プログラムのパフォーマンスを向上させることができます。

正規表現パターン マッチングも同様ですが、比較と一致を実行する前に、(re.complie() 関数を使用して) 正規表現パターンを正規表現オブジェクトにコンパイルすることも最適です。

7. モジュール プログラミングの習慣

モジュール内の最上位の Python ステートメント (インデントのないコード) は、モジュールがインポートされるときに (実際に実行する必要があるかどうかに関係なく) 実行されます。 。したがって、メインプログラムに関連する関数コードも含め、モジュールのすべての関数コードを関数に配置するようにしてください。これらの関数コードは main() 関数に配置することもでき、メインプログラム自体が main() 関数を呼び出します。 。

モジュールの main() 関数にテスト コードを記述できます。メインプログラムで name の値を確認し、'main' (モジュールが直接実行されていることを示す) の場合は main() 関数を呼び出してテストを実行し、モジュール名 (モジュールが直接実行されていることを示す) の場合はテストを実行します。呼び出されている場合)、テストは実行されません。

以上がPython プログラムのパフォーマンスを向上させる 7 つの習慣の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。