Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pythonを高速化するための いくつかのステップと Dask

ksnt
November 27, 2019

Pythonを高速化するための いくつかのステップと Dask

ksnt

November 27, 2019
Tweet

More Decks by ksnt

Other Decks in Programming

Transcript

  1. 高速化するためのの方法 • 計算負荷の高い処理を避の高い処理とか分散処理とを高速化するため避けるける • アルゴリが飛んできやすズムの改良の改良 • 並列処理とか分散処理と • 分散処理とか分散処理と •

    Pythonより速い速いPythonを高速化するため使えないんですようテーマはとてつ • Dask (並列・分散処理とか分散処理と) 今日の会話のメインは全然使えないんここらへん! 次回や話すつもり速いです! 今日の会話は全然使えないんほとんど話さないこと話しません!
  2. よくある高速化するためのの話 - for文を避けるを高速化するため避けるける s = 0 for i in list_of_ints:

    s += i s = sum(list_of_ints) s = ‘’ for c in words: s = s + c 遅いい 速い s = ‘’.join(words) https://atsuoishimoto.hatenablog.com/entry/2019/01/18/180020 ※ ほぼ同等な処理時間同等な処理時間となな処理とか分散処理と時間となるように最となるようテーマはとてつに詳しいというわ最適化するための済
  3. メモ化 化するための - lru_cache 関しては重いので数をキャッシュを高速化するためキャッシュ(メモ化 化するための)してくれる! Dynamic Programming!    ※LRU =

    Least Recently Used 最近最も使えないんですよわれていないデー タを最初に捨てるを高速化するため最初に捨てる。に詳しいというわ捨てる。てる。
  4. JIT(Just-In-Time)コンパイラ • ソフトウェアを高速化するため構成するモジュールするモ化 ジュールやクをプロラス、いいですよね。関しては重いので数をキャッシュなど話さないことの、いいですよね。ある単位のの コードが求められる場所まさに詳しいというわ実行する機械語に変されるその時に詳しいというわ、いいですよね。コンパイルされる • JITを高速化するため装備した処理系は、した処理とか分散処理と系は、表面上はイは全然使えないん、いいですよね。表は、狭くて浅い面上はインタプリタは全然使えないんインタを最初に捨てるプとリが飛んできやすタを最初に捨てるとして動作するが、内部でするが求められる場所、いいですよね。内部でで コンパイルを高速化するため行する機械語に変い、いいですよね。メモ化 リが飛んできやす上はインタプリタに詳しいというわ生成するモジュールした機械語に変換するのコードが求められる場所実行する機械語に変されるた め、いいですよね。インタを最初に捨てるプとリが飛んできやすタを最初に捨てると比べると実行速度べると実行する機械語に変速度を向上することを高速化するため向上はインタプリタすることが求められる場所できる

    • この意味で、で、いいですよね。JITは全然使えないんCPUやOSに詳しいというわ依存しない実行形式しない実行する機械語に変形式を配布できる、を高速化するため配布できる、というできる、いいですよね。というテーマはとてつ インタを最初に捨てるプとリが飛んできやすタを最初に捨てるの利点を保ったまま、を高速化するため保ったまま、実行ったまま、いいですよね。実行する機械語に変速度を向上することが求められる場所遅いい、いいですよね。というテーマはとてつ欠点を保ったまま、を高速化するため克服しし ようテーマはとてつとするものといえる。
  5. distutils で Cython モ化 ジュールを高速化するためビルドする • hello.pyxを高速化するため用意 • setup.pyを高速化するため用意 •

    $python setup.py build_ext --inplace でモ化 ジュールを高速化するためビルド • Pythonのインタを最初に捨てるプとリが飛んできやすタを最初に捨てるからfrom hello import say_hello_to を高速化するため実行する機械語に変し、いいですよね。 import した関しては重いので数をキャッシュを高速化するため使えないんですようテーマはとてつ
  6. PyPy • Pythonで記述すると、されたPythonの処理とか分散処理と系は、表面上はイ • RPython (Restricted Python) で記述すると、されている • Cythonより速い速い

    これを高速化するためそのまま(?)使えないんですようテーマはとてつとさらに詳しいというわ速いらしい
  7. PyPyのインストール(Ubuntu 18.04) $sudo apt install pypy $ pypy -V Python

    2.7.13 (5.10.0+dfsg-3build2, Feb 06 2018, 18:37:50) [PyPy 5.10.0 with GCC 7.3.0] $ sudo snap install pypy3 --classic $ pypy3 -V Python 3.6.9 (5da45ced70e5, Oct 09 2019, 19:12:54) [PyPy 7.2.0 with GCC 6.2.0 20160901]
  8. 速度を向上することの比べると実行速度較 $ python3 compare_time.py end:8.666760921478271 $ pypy3 compare_time.py end:0.12522006034851074 import

    time start = time.time() for i in range(100000000): i * i end = time.time() - start print("end:{0}".format(end))
  9. Daskの特徴 1. 動的として開発されタを最初に捨てるスクをプロスケジューリが飛んできやすングすること Airflow, Luigi, Celery, Makeと似ているが ているが求められる場所 interactive computational

    workloadsのために詳しいというわ最適化するためのされている点を保ったまま、が求められる場所違ううテーマはとてつ 2. “Big Data”コレクをプロションズ parallel arrays, dataframes, and lists that extend common interfaces like NumPy, Pandas, or Python iterators to larger- than-memory or distributed environments
  10. 参考えず使ってみる文を避ける献 • Pythonの高速化するための? - atsuoishimoto's diary • Python 3.8 の概要がある

    (その4) - multiprocessing.shared_memory モ化 ジュール - atsuoishimoto's diary • 高速化するためののためのPython Tips – のんびり速いしているエンジニアの日の会話記 • High Performance Python • Expert Python Programming Second Edition • Learning Cython Programming • http://rinatz.github.io/swigdoc/tutorial.html • 深い入りしないり速いしないCython入りしない門