あなたが知っておくべきPythonパフォーマンスのヒント
Pythonコードのパフォーマンス最適化完全戦略
Pythonダイナミックタイプの解釈言語として、走行速度はCなどの静的タイプのコンピレーション言語よりも遅くなる可能性があります。しかし、特定の手法と戦略により、Pythonコードのパフォーマンスを大幅に改善できます。この記事では、Pythonコードを最適化してより速く効率的に実行し、Pythonのモジュールを使用して時間を実行するためにコードを正確に測定する方法について説明します。 timeit
デフォルトでは、モジュールはコードを100万回繰り返し、測定結果の精度と安定性を確保します。
の例コード(timeit
測定を使用
timeit
print_hi
import timeit def print_hi(name): print(f'Hi, {name}') if __name__ == '__main__': t = timeit.Timer(setup='from __main__ import print_hi', stmt='print_hi("leapcell")') print(t.timeit())
<块>
I/O -DENSE操作とは、I/O操作の完了にほとんどの手順を費やしたプログラムまたはタスクを指します。 I/O操作には、ディスクからのデータ、ディスク、ネットワーク通信などの読み取りが含まれます。これらの操作には通常、ハードウェア機器が含まれるため、その実行速度はハードウェアの性能とI/O帯域幅に限定されます。 time
time.perf_counter()
特性は次のとおりです
import time start_time = time.perf_counter() # ...你的代码逻辑... end_time = time.perf_counter() run_time = end_time - start_time print(f"程序运行时间: {run_time} 秒")
プログラムがI/O操作を実行する場合、データが外部デバイスからメモリまたはメモリから外部デバイスへの送信にデータを送信するためのデータを待機する必要があります。ブロッキング。
CPU使用率:
I/O操作の待ち時間により、CPUはこの期間中に自由状態にある可能性があり、CPU使用率が低くなります。<能>パフォーマンスボトルネック:
i/o操作速度は、特にデータボリュームが大きいか、伝送速度が遅い場合、プログラムパフォーマンスのボトルネックになることがよくあります。
-
たとえば、
- 100万のI/O集約型操作を実行:
- 実行結果は約3秒です。また、<空>の空の方法を呼び出すと、プログラムの速度が大幅に改善されます。 > i/o濃度操作最適化方法:
- 必要に応じて(ファイルの読み取りや書き込みなど)、次の方法を使用して効率を向上させることができます。
を使用してprint
およびその他の非同期プログラミングモデルを使用して、I/O操作が完了するのを待っている間にプログラムが他のタスクを実行し続け、CPU使用率を高めることができます。
import time import timeit def print_hi(name): print(f'Hi, {name}') return if __name__ == '__main__': start_time = time.perf_counter() t = timeit.Timer(setup='from __main__ import print_hi', stmt='print_hi("leapcell")') t.timeit() end_time = time.perf_counter() run_time = end_time - start_time print(f"程序运行时间: {run_time} 秒")
print
<行>並列処理:print_hi('xxxx')
データ全体の速度処理速度を改善するために、並行して複数のI/O操作を実行します。
def print_hi(name): return
適切なデータ構造を選択して、データの読み取り時間と書き込み時間を減らします。
<、> 2。ジェネレーターを使用してリストと辞書を生成Python 2.7およびその後のバージョンでは、リスト、辞書、およびコレクタージェネレーターが改善され、データ構造の構築プロセスが簡潔で効率的になりました。
- <
import timeit def print_hi(name): print(f'Hi, {name}') if __name__ == '__main__': t = timeit.Timer(setup='from __main__ import print_hi', stmt='print_hi("leapcell")') print(t.timeit())
ログイン後にコピーログイン後にコピー<。>2。ジェネレーターの最適化を使用してください:
ジェネレーターを使用する方法は、よりシンプルで高速です。import time start_time = time.perf_counter() # ...你的代码逻辑... end_time = time.perf_counter() run_time = end_time - start_time print(f"程序运行时间: {run_time} 秒")
ログイン後にコピーログイン後にコピーjoin()
を使用します <高>メソッドは、特に多数の文字列を扱う場合は、join()
たとえば:<例>%
<<>:を使用してくださいimport time import timeit def print_hi(name): print(f'Hi, {name}') return if __name__ == '__main__': start_time = time.perf_counter() t = timeit.Timer(setup='from __main__ import print_hi', stmt='print_hi("leapcell")') t.timeit() end_time = time.perf_counter() run_time = end_time - start_time print(f"程序运行时间: {run_time} 秒")
ログイン後にコピーログイン後にコピー
<函>関数は、通常、従来のjoin()
サイクルよりも効率的です。def print_hi(name): return
ログイン後にコピーログイン後にコピー<统>従来のサイクル方法:
map()
<<>
map()
関数を使用:for
<、>5。適切なデータ構造を選択< 適切なデータ構造を選択することは、Pythonコードの実行効率を改善するために不可欠です。辞書の検索効率はリストよりも高く(特に大量のデータ量で)、小さなデータの量が逆の場合。 頻繁に多くの要素を削除した場合は、
の使用を検討してください。 頻繁に検索するときは、2つのポイント検索の使用を検討してください。def fun1(): list_ = [] for i in range(100): list_.append(i)
ログイン後にコピー<六>6。不必要な関数呼び出しを避けてください
不要な関数呼び出しを削減し、複数の操作をマージし、効率を向上させます。map()
def fun1(): list_ = [i for i in range(100)]
ログイン後にコピー7つ、不必要な紹介を避けてください
不要なモジュールのインポートを削減し、費用を削減します。collections.deque
8。グローバル変数の使用を避けてくださいbisect
関数内にコードを配置します。これは通常、速度を上げる可能性があります。 9つ、モジュールと関数属性アクセスを避けます
10個、内なるサイクルの計算を減らします
ループで事前に計算できる値を計算して、重複計算を削減します。
(Pythonコードのパフォーマンスの最適化とは何の関係もないため、Leapcellプラットフォームの紹介が省略されています)
上記の最適化方法は常に適用できるとは限らず、特定の状況に従って適切な最適化戦略を選択する必要があることに注意してください。 パフォーマンスとテストコードは、最も効果的な最適化ソリューションを見つけることができます。
以上があなたが知っておくべきPythonパフォーマンスのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

正規表現は、プログラミングにおけるパターンマッチングとテキスト操作のための強力なツールであり、さまざまなアプリケーションにわたるテキスト処理の効率を高めます。

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。
