Python プログラムが遅すぎる場合は、以下のヒントとコツに従ってください -
###抽象的な###
特に小さな関数やメソッドの形式での過度の抽象化は避けてください。抽象化すると間接的な処理が生じ、インタプリタにさらに多くの作業を強いる傾向があります。間接的なレベルが実行される有用な作業の量を超えると、プログラムの速度が低下します
ループのオーバーヘッドを回避する
ループ本体が非常に単純な場合、for ループ自体のインタープリターのオーバーヘッドがオーバーヘッドの大部分を占める可能性があります。ここでは、マップ機能がより効果的に機能します。唯一の制限は、map のループ本体が関数呼び出しでなければならないことです。
Example
の中国語訳は次のとおりです:
Example
ループの例を見てみましょう
リーリー
オーバーヘッドを避けるために、上記のループの代わりにマップを使用できます-
リーリー
リスト内包表記を使用する
リスト内包表記を使用すると、for ループよりもオーバーヘッドが少なくなります。リスト内包表記を使用して実装された同じ例を見てみましょう -
リーリー
ジェネレータ式
ジェネレーター式は Python 2.4 で導入されました。これらは、リスト全体を一度に生成するオーバーヘッドを回避できるため、ループの最良の代替手段と考えられています。代わりに、少しずつ反復できるジェネレーター オブジェクトを返します -
リーリー
ローカル変数
Python は、グローバル変数よりもローカル変数に効率的にアクセスします。ローカル変数自体を使用して上記の例を実装できます -
リーリー
インポート ステートメントのオーバーヘッド
import ステートメントは簡単に実行できます。多くの場合、可視性を制限したり、最初の起動時間を短縮したりするために、これらを関数内に配置すると便利です。場合によっては、インポート ステートメントを繰り返し実行すると、パフォーマンスに重大な影響を与える可能性があります。
接続文字列
これは、Join を使用して複数の文字列を連結する場合に、より優れた高速なオプションです。ただし、文字列の数が少ない場合は、演算子を使用して連結する方が効率的です。実行にかかる時間が短くなります。 2 つの例でこれを見てみましょう。
演算子を使用して複数の文字列を接続します
Example
の中国語訳は次のとおりです。
Example
次に、多くの文字列を連結し、時間モジュール -
を使用して実行時間をチェックします。
リーリー
###出力###
リーリー
結合を使用して複数の文字列を接続します
Example の中国語訳は次のとおりです。 Example
次に、Join を使用して多くの文字列を連結し、実行時間を確認します。多くの文字列がある場合は、連結の方が優れており、高速なオプションです -
リーリー
###出力###
ああああ
以上が私の Python プログラムは遅すぎます。どうすれば高速化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。