Pythonの実行効率を高めるテクニックとは?
開始する前に、関数の実行時間をカウントする Python デコレータを開発できます。これは、さまざまな Python テクニックを使用した後、時間の統計に使用されます。
# 导入时间提取的time模块 from time import time import dis def compute_time(func_): ''' 计算函数的运行时间 ''' def func_time(*arg, **kw): t1 = time() result = func_(*arg, **kw) t2 = time() print(f"{func_.__name__: >10} : {t2 - t1:.6f} 秒") return result return func_time
上記の compute_time 時間計算関数を開発しましたが、それが正常に使用されるかどうかをテストするための hello_world 関数を開発できます。
@compute_time def hello_world(): print("hello_world!") hello_world() # hello_world! # hello_world : 0.000000 秒
hello_world 関数のテストを通じて、時間デコレータ compute_time が関数の実行時間を正常に計算できることが証明されました。
次に、Python の実行速度を向上させ、実行時間の結果を提供する次の 5 つの方法を正式に紹介します。
1. 標準ライブラリまたは非標準ライブラリの合理的な使用
開発プロセス中に Python の標準ライブラリまたは非標準ライブラリを過小評価してはなりません。正直に言うと、同じビジネスコードを書くことがあります。確かに、大手のような完璧なものは存在しません。
たとえば、次のような業務では、Python のリストの値を文字列に変換する必要があるのですが、まず、次のコード ブロックがどのように記述されているかを見てください。
# 初始化一个list列表 list_ = ['a', 'b', 'c'] * 10000 @compute_time def func_1(list_=None): ''' 列表元素转字符串函数 ''' str_ = '' for s in list_: str_ = str_ + s return str_ func_1(list_) # func_1 : 0.001999 秒
私が作成した従来の方法を使用して上記の func_1 関数の実行を変換するのはより複雑で、0.001999 秒かかります。
@compute_time def func_2(list_=None): ''' 列表元素转字符串 ''' return ''.join(list_) func_2(list_) # func_2 : 0.000000 秒
func_1 関数の実行時間と比較すると、func_2 の実行時間はほとんど無視できるほどであり、10 進数 6 桁ではまったく変化が見られません。
2. ループの使用を減らす
実際、通常の開発プロセスから、リスト導出、反復などを使用したシリアル化可能なデータ処理方法の方が for ループよりも便利であることがわかりました。 、 効率的。
以下では、例を使用して問題を説明することもできます。たとえば、リスト内の 2 で割り切れる数値を選択する必要があります。
# 初始化循环次数n n = 100000 @compute_time def func_3(n=None): list_ = [] for m in range(n): if m % 2 == 0: list_.append(m) return list_ @compute_time def func_4(n=None): return [m for m in range(n) if m % 2 == 0] func_3(n) func_4(n) # func_3 : 0.004986 秒 # func_4 : 0.003014 秒
func_3 関数と func_4 関数を比較すると、まず、func_4 のメソッドは func_3 よりもはるかに簡単です。
そして、時間の点では、func_4 はリスト導出を使用して、通常の for ループよりも 1/4 高速に実行されます。
3. コードの繰り返し実行に注意する
コードの繰り返し実行については、通常の開発方法で誰もが経験することができます。つまり、公開コードとして 1 回だけ実行できます。ブロック。
パブリックに使用できるコード ブロックをループに追加できます。これは、コード ブロックの実行効率にのみ影響します。
たとえば、文字列内の特定の要素を検索するには、Python の re モジュールを使用する必要があります。時間の結果を比較する 2 つの方法を次に示します。
# 导入正则表达式匹配模块 import re @compute_time def func_5(str_=None): for s in str_: result = re.search(r'a*[a-z]?c', s) @compute_time def func_6(str_=None): repx = re.compile(r'a*[a-z]?c') for s in str_: result = repx.search(s) func_5('abcdefg1234oks' * 1000) func_6('abcdefg1234oks' * 1000) # func_5 : 0.006999 秒 # func_6 : 0.002000 秒
func_5 と func_6 の業務実装方法を比較すると、re モジュールのコンパイル正規一致オブジェクトを for ループの外層に直接配置することで、実行時間が 3 倍以上短縮されました。 。
これは、検索を使用してループ内で通常のオブジェクトに直接一致させると、ループ内に通常の一致するオブジェクトが継続的に作成され、
for ループの処理負荷が増大し、速度が低下するためです。
4. グローバル変数の使用を減らす
この点を説明するとき、グローバル変数は常に存在し、プログラムの実行中に消えることはないことを理解する必要があります。
グローバル変数が多すぎると、操作中に多くのメモリが占有されます。グローバル変数と比較してローカル変数を使用した方が効率的です。
以下では、グローバル変数とローカル変数の実行時間を比較する 2 つの方法の例を使用します。
mes_1 = 'ss1' mes_2 = 'ss2' mes_3 = 'ss3' @compute_time def func_7(): result = mes_1 + mes_2 + mes_3 return result @compute_time def func_8(): me_1 = 'ss1' me_2 = 'ss2' me_3 = 'ss3' result = me_1 + me_2 + me_3 return result func_7() func_8() # func_7 : 0.000997 秒 # func_8 : 0.000000 秒
問題を説明するために、上で通常の加算計算を実行しましたが、func_8 関数がローカル変数を使用する方法は確かに高速です。
5. 合理的なデータ構造を使用する
ほとんどの Python 開発プロセスでは、多くの人が便宜上データを処理するためにリストを使用する必要があります。
Python にはリスト、タプル、セット、辞書という 4 つのデータ構造が組み込まれており、適切なビジネス シナリオで適切なデータ構造を使用してデータを処理することにより、計算の実行効率も向上します。
例: 以下ではリスト list とタプル tuple から対応するインデックス位置の値を抽出します。
@compute_time def func_9(): data = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] print(data[3]) @compute_time def func_10(): data = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h') print(data[3]) func_9() func_10() # func_9 : 0.000000 秒 # func_10 : 0.000000 秒
func_9 関数と func_10 関数を実行すると、両者の時間の差は大きくなく、少なくとも小数点以下 6 桁以内では結果を区別できないことがわかりました。
print('func_9汇编产生的机器码:') dis.dis(func_9) print('func_10汇编产生的机器码:') dis.dis(func_10)
最後に、func_9 と func_10 のアセンブリ機械コードをそれぞれ確認したところ、明らかにリスト リスト処理の方がより多くの機械コードを生成していることがわかりました。
rree以上が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)

ホットトピック









2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

Hash値として保存されているため、Navicatを介してMongoDBパスワードを直接表示することは不可能です。紛失したパスワードを取得する方法:1。パスワードのリセット。 2。構成ファイルを確認します(ハッシュ値が含まれる場合があります)。 3.コードを確認します(パスワードをハードコードできます)。

データの専門家として、さまざまなソースから大量のデータを処理する必要があります。これは、データ管理と分析に課題をもたらす可能性があります。幸いなことに、AWS GlueとAmazon Athenaの2つのAWSサービスが役立ちます。

Redisサーバーを起動する手順には、以下が含まれます。オペレーティングシステムに従ってRedisをインストールします。 Redis-Server(Linux/Macos)またはRedis-Server.exe(Windows)を介してRedisサービスを開始します。 Redis-Cli ping(Linux/macos)またはRedis-Cli.exePing(Windows)コマンドを使用して、サービスステータスを確認します。 Redis-Cli、Python、node.jsなどのRedisクライアントを使用して、サーバーにアクセスします。

Redisのキューを読むには、キュー名を取得し、LPOPコマンドを使用して要素を読み、空のキューを処理する必要があります。特定の手順は次のとおりです。キュー名を取得します:「キュー:キュー」などの「キュー:」のプレフィックスで名前を付けます。 LPOPコマンドを使用します。キューのヘッドから要素を排出し、LPOP Queue:My-Queueなどの値を返します。空のキューの処理:キューが空の場合、LPOPはnilを返し、要素を読む前にキューが存在するかどうかを確認できます。

質問:Redisサーバーバージョンを表示する方法は?コマンドラインツールRedis-Cli-versionを使用して、接続されたサーバーのバージョンを表示します。 Info Serverコマンドを使用して、サーバーの内部バージョンを表示し、情報を解析および返信する必要があります。クラスター環境では、各ノードのバージョンの一貫性を確認し、スクリプトを使用して自動的にチェックできます。スクリプトを使用して、Pythonスクリプトとの接続やバージョン情報の印刷など、表示バージョンを自動化します。

NAVICATのパスワードセキュリティは、対称暗号化、パスワード強度、セキュリティ対策の組み合わせに依存しています。特定の測定には、SSL接続の使用(データベースサーバーが証明書をサポートして正しく構成することを条件)、NAVICATの定期的な更新、より安全なメソッド(SSHトンネルなど)を使用し、アクセス権を制限し、最も重要なことは、パスワードを記録しないことです。
