タグ

cythonに関するzetta1985のブックマーク (6)

  • Django CyMysql backend の Django 2.0 対応: ある nakagami の日記

    この記事はDjango Advent Calendar 2017 https://qiita.com/advent-calendar/2017/django の4日目の記事です。 Pythonmysql 用データーベースドライバーってたくさんあるのですが、CyMySQL https://github.com/nakagami/CyMySQL も、そんな(マイナーな)ドライバーのひとつです。 PyMySQL https://github.com/PyMySQL から fork したもので、Cython がインストールされていれば速く、インストールされていなくても pure python で、それなりに動く、というものです。 Django に対する、CyMySQL 用のデーターベースバックエンドもリリースしていたのですが、Django 2.0 のリリースにともなって、 Django 2.

    Django CyMysql backend の Django 2.0 対応: ある nakagami の日記
  • Cython0.27で導入された型ヒント・変数アノテーション対応を試す - Qiita

    この記事はPython Advent Calendarの1日目の記事です。 背景 Cythonのバージョン0.27からPython 3.5で追加された型ヒント、3.6で追加された変数アノテーションを、CythonとしてもPythonとしても実行できるコード(Pure Python Mode)を記述する際の型情報として受け付けることができるようになりました。経緯などはこのissueを読むと分かります。 型ヒントはPEP484で、変数アノテーションはPEP526で提案されたものですが、要は下記のように関数の引数、返り値、ローカル変数などに型情報をアノテーションとして付与できるというものです。

    Cython0.27で導入された型ヒント・変数アノテーション対応を試す - Qiita
    zetta1985
    zetta1985 2017/12/01
    "pyannotateによってこの先Python3コードが型情報付きで吐き出されるようになれば、先に述べたCythonの型情報として用いることで、より手軽に高速化が図れるようになるのではないか"
  • 機械学習アルゴリズムのボトルネックをCythonで改善する話 - Qiita

    この記事について Pythonを速くする方法について語ります プロファイリングによってCPUバウンドな処理のボトルネックを見つけます 見つけたボトルネックをCythonで改善します はじめに 先日Bayesian Personalized Ranking (BPR)というレコメンドアルゴリズムを実装しました。 こちらの論文の式を参考にコードを書いてみたのですが、実行してみたらちょっと遅すぎて使えなかったため、処理速度の改善に取り組みました。 その時に試したことを備忘録的にまとめます。 この記事で用いる手法とコード BPRはユーザ x アイテムの行列の行列分解を与えます。 ユーザ x アイテムの行列$X$を、ユーザ x ファクターの行列$U$とアイテム x ファクターの行列$V$に分解します。 この問題をどのように解くかはBPRの元論文をご覧ください。 この手法を以下のように実装しました。$

    機械学習アルゴリズムのボトルネックをCythonで改善する話 - Qiita
  • Cythonで連結リスト(linked list)をつくってみる - Qiita

    CのライブラリのPython bindingを書こうと思い、Cythonでやろうと練習を兼ねて linked listを作ってみました。( Python C APIはつらかったので…) わりと旬を逃した感はありますが気にせずやっていきます。 Cythonについて 一言で表せば PythonみたいにCが書ける言語です。 正確に言えばPythonからCを叩くためのPython/C APIがありまして、そのAPIを簡単に書ける言語になります。 Pythonのオブジェクトを コンパイルして書けますし、 Cのライブラリを叩くこともできるので、 高速化や bindingに使われています。 連結リスト(linked list)を実装する やりたいこと 連結リスト(LinkedList)の実装 structを使う、以下の2つの情報を持つ int data LinkedList*next 実装するメソッド

    Cythonで連結リスト(linked list)をつくってみる - Qiita
  • Pythonを高速化するCythonを使ってみた - Kesinの知見置き場

    突然ですが私はPythonが好きです。でもPythonは遅いです。 何が遅いかというと、致命的なことに四則演算が遅いです。でも他の動的型付け言語でスクリプト言語と呼ばれるPerl, Ruby, Javascript も C, Javaのようなコンパイルを行う静的型付け言語に比べれば圧倒的に遅いです(近年ではJavascriptのように著しく進歩した言語もあるので必ずしもそうだとは言えませんが)。 スクリプト言語が遅い原因の一つは、変数の型が指定されていないので型のチェックを毎回行う必要があるからです。この特性があるおかげ自動的に型を変換してオーバーフローを防いでくれるというメリットもあるのですが、どうしても静的型付け言語よりは速度を出すことができません。 ならPythonのコードに型指定を加えてコンパイルしちゃえばいいじゃん!というのがCythonです。正確にはPythonライクな文法で書

    Pythonを高速化するCythonを使ってみた - Kesinの知見置き場
  • NumPyとCythonを組み合わせると爆速! - Kesinの知見置き場

    前回の記事の最後にcythonとnumpyを組み合わせても速くならなかったと書いてしまったのですが、@frontier45 さんから公式のチュートリアルをちゃんと読みましょう。と教えていただいたので、自分の勉強がてらブログにも書いておきます。 使用するコードは何のひねりもなく公式のチュートリアルから丸パクリです。 注意:以下のベンチマークはMacOS 10.7.3 MacBook Core2 Duo 2.26GHzでPythonとC/C++のコンパイラはMac標準のPython2.7.1, llvm-gccを使用しています。 Python/Cythonはipythonのtimeitを利用して実行時間を測定しています。 なお、以下の記録はあくまで私の環境、私の実装での記録なので比較の結果は正しいというものではないです。公式のチュートリアルでも実行時間が書かれていますので、そちらの方もご覧下さ

    NumPyとCythonを組み合わせると爆速! - Kesinの知見置き場
  • 1