I developed Tenjin which is the fastest template engine in Python world. In this presentation, I show you how to make template engine faster with a lot of benchmarks.
Pythonのイベント「PyCon mini JP」に行ってきました。…いや昼からでしたが。思ったよりいろいろなジャンルの話があって楽しく聞いていました。 あと、最後のじゃんけん大会で、オライリーのアナライジング・マルウェアのTシャツをゲットしてしまいました。ありがとうございました。 以下、メモほぼそのまま。 テンプレートエンジンの高速化と失敗談について 文字列の連結を速くextendで足してjoinが定番 いろいろな方法をためしたが、結局これが一番 Tenjinのコード埋め込みインデントフリー 複数行を1つのメソッドで出力この程度のこともやってないテンプレートエンジンも多い 40%高速化 append50%高速化 メソッド呼び出しのコストが高い ここまでで1万ページ/sの性能ここからが苦難 リストに文字列以外のものが入っているとjoinでエラーにstr()のオーバーヘッド str()をビ
日本Pythonユーザ会は12月8日(水)、「帰ってきた Python Workshop 2010/12」と題したPython勉強会イベントを開催する。今回はMixiアプリとGoogle App Engineについて、エキスパートからの活用ノウハウが語られたり、CG制作用ジョブディスパッチシステムにおけるPythonの活用といったセッションが予定されている。またパネルディスカッションでは、最近話題のLL(Lightweight Language)を中心とした各言語を利用した著名人がPythonを語るという興味深い趣向となっている。 Pythonに興味がある、Pythonをより深く活用したいユーザはもちろん、プログラミング言語全般に興味を持った人にもぜひ参加して欲しい。 開催概要は以下の通り。
みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 免責事項 プライバシーポリシー 「入門 自然言語処理」はヤバい書籍なので禁書にすべきだ。 タイトルは釣りじゃない。その理由を10個挙げる。 自然言語処理のかなり基本的なことからそこそこ高度なことについて解説されてあり,自然言語処理について理解が深まり過ぎる ボリュームがあるのに書き方が平易でついつい読みふけってしまう 演習問題があり,自分の理解度を確かめられたりするのもケシカラン 原著は欧米語のための言語処理について書かれた書籍なのに,日本語の形態素解析などについても解説してあって我慢できない 必要ライブラリのインストールなど環境構築に時間が取られそうでヤバい 書籍の応用でBotとか人工無能とか作ったらどうかな−,と
今回は資料の作成が後手に回ってしまい、運営の方々や発表者の皆様には大変迷惑をおかけしました。 さて、今回は ctypes 拡張モジュールに関する内容を発表させていただきました。 ctypes拡張モジュールView more presentations from Moriyoshi Koizumi. php-in-python の使い方 PHP-in-Pythonには、まだドキュメントがありません。インストール方法を簡潔に説明します。 a. Windowsの場合 windows.php.netよりThread-safe版のPHPのバイナリをダウンロードします。 ダウンロードしたアーカイブを適当なディレクトリに展開します。 展開された中身に含まれているphp5ts.dllの場所がPATH環境変数に含まれるようにします。 b. Linux等Free Unixの場合 php.netよりPHPのソー
はじめまして、gumiの津村です。 現在は解析系の仕事をしたり、ツールを作ったりしています。 今回の話は高速化についてです。 結構長めの文章です。 目次 実行速度の高速化 Python/C API ctypes Pyrex Cython SWIG その他 纏め 実行速度の高速化 高速化といっても色々ありますが、今回は実行速度の高速化についてです。 弊社ではPythonを全面的に採用していますが、そもそもLLは実行速度が遅い言語です。特にC言語のようなコンパイラ系の言語と比べると非常に遅いです。 それでもLL系の言語がここまで使われるようになったのは、開発効率が良いからです。 もはや常識ですね。 しかし、それでも特定の領域ではどうしてもPythonのようなLL系言語では厳しい部分も出てきます。 アルゴリズムを変更しても、ハードウエアを変えても、無理な物は無理です。 速度に問題がある場合の最適
Perlのperlbrewってツールが凄く使いやすくて羨ましかったので、Pythonで使えるpythonbrewってツールを作ってみました。 perlbrew? perlbrewとはPerlをバージョン毎にインストールして、それらをswitchして使ったりできるツールのこと。 既存の環境を壊さずに最新のPerlを簡単に試すことができます。 PerlからCPANモジュールまでホームディレクトリ以下に全部インストールしてくれるので、自分専用のPerl環境を構築することができます。 perlbrewの作者の劉康民さんは、本当にすばらしいアイデアの持ち主。 pythonbrewとは 基本的にperlbrewをパクったと同じ思想なツール。 Pythonインタプリタのインストールから、それらの管理まで面倒をみてくれます。 例えば、一からPython2.6.6、2.5.5、2.4.6の環境を構築したいな
Jinja2 is a full-featured template engine for Python. It has full unicode support, an optional integrated sandboxed execution environment, widely used and BSD licensed. Jinja is Beautiful {% extends "layout.html" %} {% block body %} <ul> {% for user in users %} <li><a href="{{ user.url }}">{{ user.username }}</a></li> {% endfor %} </ul> {% endblock %} And PowerfulJinja2 is one of the most used tem
渋日記@shibu.jp 渋川よしきの日記です。ソフトウェア開発とか、ライフハックを中心に記事を書いていきます。 LL Tigerでライトニングトークスに参加してきました。今回はトーナメントの勝ち抜き方式で、今までのLTで見た中で技術的にハイレベルなプレゼンが数多く行われました。我らが"殺伐Python"は、残念ながら2回戦敗退でしたが、その負けた勝負も「言語実装者vs言語実装をだます人」という、刺激的すぎる対戦でした。柴田さんも、良い試合だったと言ってくれました。@moriyoshi, @ymotongpoo、お疲れ様でした!ちなみに写真は昼休み。「shibuya.jsやべぇよ、飲んで勢いでやろうぜ」的なw(清水川さん、写真ありがとうございます) イベントとしては、並列の話がおもしろいなぁ・・と思いました。上から下まで、コードジェネレータ、DSL、トランスレート・・・さまざまな技術がない
id:TAKESAKO の 「Python SyntaxError Programming」が凄いです. http://developer.cybozu.co.jp/takesako/2010/05/python-syntaxer.html #!/usr/bin/python _=-~-~(()>[]);_,__=_*_,_**_-~-~_;___='%'+`SyntaxError`[_];exec''+___*(__+~-~_)%(_*_^-~__,_*_-~__,~__*__/~_,~-~_*~_,_-__^~-~_*_,-~-~__,~-_*_,_/_^~_*~_,_-~-~_*_,_-~-~_*_,_|~-~_*~_,_+__+__/_,__,~_&_*_,__+_|_*_,_-__^~-~_*_,__^~-_*_,_|~-~_*~_,~-~_*~_,-~__,-~-~__) これ
リスト内包表記(LC)使った方が圧倒的にコードが読みやすく、短くなる。慣れてないという理由で使われてない気がするので今後の自分のためにも、メモを残す。 LCは基本的に、ListやHashを処理する際に使用される。例えば、規則性のある並びのListが欲しい時などに利用すると良い。 1, 基礎 リストの作成 forの前が処理、forからList名までがひとつのforの段落で前から評価される。 src_list = [1,2,3,4,5] print [x for x in src_list] # [1,2,3,4,5] リストの作成2 for部で取り出された要素が、その後ろif部で評価され真だったものだけが、初めのx*2に渡され処理される(この場合は、2.4だけ) src_list = [1,2,3,4,5] print [x*2 for x in src_list if x % 2 == 0
Boost の一部ながらも「実用的」すぎるため、とかくテンプレートメタプログラミングを愛好する諸兄から黙殺されてきた不幸のライブラリ、Boost.Python。Boost.勉強会でこいつの魅力を伝えようと思ったのだけど、時間の都合で無理だったので、簡単に紹介してみたい。 Boost.Python の基礎 Boost.Python は C++ のクラスや関数をラップする Python モジュールを恐ろしく簡単に書けるようにする、強力なライブラリである。 特に、Pyrex や Cython と比べて何がうれしいのかというと、 Python側にいちいちラッパ関数を書かなくてよい (テンプレートにより自動的に定義される) コンバータを登録することで、Python⇆C++の型の透過的な変換が容易にできる C++ のクラスを分かりやすい形で Python のクラスとして見せることが可能 といった点が挙
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く