筋トレや読書のことをはじめとして、プログラミングその他日常生活における様々なことについて書いていきます。自然言語処理スポンサーリンクHatenaFacebookTwitterPocketPythonの処理を高速化したいですか?大規模データを扱う場合、Pythonはうまく書かないと処理にかなり時間がかかります。自分も実際、20万文以上の文章を扱って様々な処理を施していますが、高速化する方法を知らないときは、終了までに数時間や数日間にも及ぶプログラムを動かしていました。高速化方法を実装してみたところ、数分で終わりました。そこで本記事では、Pythonの処理が遅くて困っている方のために、僕が試したPython高速化の例を示します。Pythonを高速化する5つの方法リスト内包表記を使うappendせざるを得ない場合リストの静的確保Whileよりもforを使う参照回数をなるべく減らす行列やベクトルはNumpyでまとめPythonを高速化する5つの方法さて、Pythonを高速化する方法を見ていきましょう。リスト内包表記を使うリストに対して、appendを使って値を入れていませんか?リスト内包表記を使うだけで、圧倒的に処理が速くなります。100,000,000の数字をリストに入れるプログラムを実行しました。time.time()print(t2-t1)結果は以下のようになりました。内包表記17.45秒かなり変わりますね。大規模データを扱うときは、内包表記にしましょう。appendせざるを得ない場合appendせざるを得ない場合もあります。いう時は、appendをオブジェクト化しましょう。my_append(v)のように書きます。このオブジェクト化はあらゆる関数に適用できます。速度が気になる方は、使っている関数をオブジェクト化すると良いかもしれません。空リストを作ってappendするのは遅くなります。サイズが分かる場合は、静的確保を行いましょう。個数分かけてやるのが一番早いです。同じ要素を複数回リストに入れたい場合は、"*"を使うのが最も早いです。Whileよりもforを使うWhileは遅いです。forを使いましょう。time.time()print(t2-t1)こちらの例をご覧ください。単純に足し算をするプログラムですが、下は毎回valを参照しています。上0.0024下0.0037大規模データではもっと大きな差が開きます。行列やベクトルはNumpyで行列計算やベクトル計算はNumpyを使いましょう。圧倒的に早くなります。まとめいかがでしたか?本記事では、Pythonの処理を高速化する5つの方法をまとめました。自分はこれらの方法を実装して、数倍以上速くなりました。大規模なデータを扱っている方は、こちら必見となります。こちらの記事では、Pythonや機械学習について詳しく解説しています。はてなブログPro筋トレを愛する大学4年生。(1)このブログについてプライバシーポリシーお問い合わせスポンサーリンク。