オッチ､ 見えないぞ｡
でも､ 気持ちはわかるよ｡
今､ あなたは私を疑っていますね｡
ジェネレーターは無駄だと思ってるんでしょう｡
高速で高性能と言い続けていますが､ 私にはよくわかりません｡
このLキーワードとこの次｡
そして正直なところ､ それはただ
ただ､ 意味がないんです｡
その真の力を納得させましょう｡
以前使用した例に戻りたいので､ これらをすべて選択して削除します｡
デコレーターの性能を作ったときのことを思い出してください｡
装飾されたセクションで
このパフォーマンス・デコレーターを使用することで
最小限にとどめよう｡
しなければならないのです｡
私たちのための関数範囲を使用する長い時間の関数｡
そして､ もう一つ､ 範囲を使用して､ それをリストに変換する長大な関数があります｡
だから､ 人はリストを作成することを忘れないでください｡
そして私たちのコンピュータのメモリに作成されたリストから､ 1つずつ進み､
5倍するのです｡ これはPythonに組み込まれているジェネレータで､ 1つずつゼロとメモリを保持して5倍し､
メモリを1つ保持して5倍し､ どんどん進み､ 古い数字をメモリから削除していきます｡
両者のパフォーマンスはどうなるのでしょうか？
試してみよう｡
ちなみに､ エクササイズにリンクしておくから､ 自分でテストして遊んでみてね｡
だから､ ロングタイムをやろう｡
そして､ 長い時間をかけて
ベットを置く｡
準備してください｡
調べてみよう｡
最初の関数が長い時間かかった1. 6秒
そして､ 2回目のファンクションでは､ ほぼ2倍の時間がかかりました｡
これはかなり大きな違いですよね？
でも､ すぐにわかるんです｡
わかりました｡
これもまあ長い時間より断然パフォーマンスがいい｡
念のため､ もう一度実行してみましょう｡
正しいことを確認する
今回は1回で終了｡ 8とし､ 2． 6.
わかりました｡
どちらも同じことをやっているのに､ こんなに速いんですね｡
そして､ こう考えてください｡
もしあなたがGoogleだったら､ Googleがどれだけのデータを持っているか考えてみてください｡
もしあなたがGoogleで働いていて､ これがさらに大きかったら､ これがさらに長かったら､ タスクをそれだけ速く実行できたらと想像してみてください｡
Googleが持っているものよりずっと少ないリソースを使うことができます｡
ジェネレータを使えば､ メモリに物を持たず､ リソースを消費する必要もなく､
代わりに効率的にデータを処理できるので､ 喜ばれますよ｡
そして､ こちらをご覧ください｡
この関数は16秒で解けました｡
つまり､ 長い時間がかかったのですが､ 実際に作るまでには長い時間がかかり､ その結果､ プロセスを殺してしまったのです｡
これがGoogleのサーバーだったら､ それこそサーバーが死んだだけで全く使い物にならない｡
ジェネレータは､ 大きなデータセットを計算するときにとても便利です｡ 特に､ 長いループを使っていて､ メモリをあまり使いたくない場合や､
すべてを同時に計算する必要がない場合､ ひとつひとつ計算する必要があるかもしれません｡
Pythonの多くのライブラリでは､ リストを使う代わりにジェネレータを使っています｡
だから､ ジェネレーターを作ることを忘れないでください｡
あとは､ 欲しいジェネレーター関数を作るだけです｡
そして､ この中で､ ある値に対して単純にループを回すだけです｡
おそらく､ 私たちはそれを範囲に与えるか､ または私たちのパラメータを受け入れることができること｡
そして､ 私たちに必要なのは､ シンプルに
降伏する｡
その結果
そして､ このブロックの中で好きなことをする｡
しかし､ 後で使えるように､ 機能を一時停止しておくようにしましょう｡
ジェネレータ関数として､ forループのようなものを行い､ ジェネレータ関数にアイテムを言って､ ある種のパラメータを与えることができます｡