Drkcore

09 04 2016 Python Tweet

ウェブのAPIとかデータベースに接続するようなプログラムを開発するときにjoblib便利すぎる

データサイエンティスト的な仕事をしたりスクレイパー的な開発をするとキャッシュしたくなることがある。

例えばどういう時かというと

  • pandas使っていてデータベースに重い重い処理を投げて帰ってきたものをd3.jsとかseabornみたいな描画処理のところで試行錯誤したい
  • requests+pyqueryとかでスクレイピング用のコード書きたいけど、相手のサイトに何度もアクセスするのは気が引ける

で、大抵そういう時ってファイルキャッシュしておくと思うんだけど、そのコードを追加するのが結構な心理的な負担になることが多いです。

本運用時に消すの忘れてアチャーってなったりするしね。

結局キャッシュ追加削除にコードの変更っていうのは面倒くさいというかよくないので、joblibを使うとハッピー

/tmpにでもキャッシュディレクトリ設定しておいてキャッシュしたい関数にデコレーターかます。これだけ

import requests
from joblib import Memory

memory = Memory(cachedir="/tmp")

@memory.cache
def get_ct():
    r = requests.get("https://clinicaltrials.gov/search?term=IPI-145&resultsxml=true")
    return r.content

if __name__ == '__main__':
    print get_ct()

本運用ではデコレーター外すだけだから心理的負担がほぼゼロ☆

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021