You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
One of the cool new features in py-spy is the ability to profile native Python extensions written in languages like C, C++ or Cython. Almost all other Python profilers[1] only show program activity that is in pure Python code, and native code will instead show up as spending time in the line of Python that calls the native function. Using native profiling tools like perf can get you a sense of wha
An open source load testing tool. Define user behaviour with Python code, and swarm your system with millions of simultaneous users. Define user behaviour in code No need for clunky UIs or bloated XML. Just plain code. Distributed & Scalable Locust supports running load tests distributed over multiple machines, and can therefore be used to simulate millions of simultaneous users Proven & Battle-te
ここHumanGeo社ではPythonを使うことが多く、それは極上の楽しみでもあります。美しく機能的なコードを短時間で記述するのにPythonはうってつけで、私個人にとっても一押しの言語です。仕事に限らずプライベートでも使っています。そんな素晴らしいPythonですが、欠点がないわけではありません。それはあまりにも遅いことです。幸いPythonには、コードをプロファイリングするための優れたツールがいくつかあるので、コードの美しさと速さを共存させることができます。 HumanGeoで働き出した頃、実行に長時間を要すプログラムのボトルネックを探り、何とかしてそれを速くさせるという仕事を担当しました。その内容は、 cProfile や PyCallGraph ( ソース )、はたまたPyPy(高速なPython用代替インタプリタ)などの各種ツールを使って、プログラムを最適化するためのベストな方法
普段、Pythonのコードは何となく速かろうという、言ってみれば勘で書いているのだけど、その勘とやらは往々にしてウンコードを生むものである。そこで、プロファイラを使っていきたいと思う。 使えそうなツール そういうわけで、いくつか使えそうなツールをリストアップした。 経過時間のプロファイラ ツール名 メモ profile ビルトイン, ピュアPythonの決定論的プロファイラ cProfile ビルトイン, C拡張の決定論的プロファイラ line_profiler 行単位の決定論的プロファイラ Plop 統計的プロファイラ, Dropboxの人が作ってる statprof 統計的プロファイラ, 開発停止? yep 拡張モジュール用の統計的プロファイラ, バックエンドにgoogle-perftools メモリのプロファイラ ツール名 メモ memory_profiler 行単位でメモリ消費量の
PyFes 2012.11 発表資料です。 システムコールに焦点を当てて、 meinheld のアーキテクチャを紹介します。 アーキテクチャを説明するために Pure Python でサンプル実装を書いていますが、ちゃんと動くし、HTTPリクエストのパースを端折っているので 10000req/sec 以上出ます。 イベントドリブンのコードでフローが判りにくい場合は python -mtrace -t --ignore-module socket webserver1.py などのようにトレースしながら実行するといいでしょう。 前提 今日は、シンプルなレスポンスを返すだけの条件でをひたすら req/sec を追求する話をします。 たとえば、 nginx の lua モジュールで "hello" と返すだけとかです。 静的ファイルを配信するサーバーとかだともっと別のことも考えないといけません。
This page is devoted to various tips and tricks that help improve the performance of your Python programs. Wherever the information comes from someone else, I've tried to identify the source. Python has changed in some significant ways since I first wrote my "fast python" page in about 1996, which means that some of the orderings will have changed. I migrated it to the Python wiki in hopes others
Pythonの標準ライブラリにはプロファイラがあるが、これは deterministic profiler という種類のプロファイラだ。関数が呼び出されたときと関数から抜けるときに登録したコールバック関数を呼び出す仕組みが用意されており、そのコールバック関数で時間を測ることで、各関数の実行時間を測ることができる。 このプロファイラは、短時間の実行で正確な時間を計測できるので、マイクロプロファイリングには適している。しかし、プロファイルを実行するとプログラムの実行速度がかなり低下してしまうという問題もある。 deterministic profiler と別の方式に、 statistical profiler というものがある。 これは、何らかの周期でプログラムのどこを実行しているのかをサンプリングするものだ。実行時間の長い関数ほど何度もサンプリングされるので、サンプル数が実行時間に比例する
The profile module provides APIs for collecting and analyzing statistics about how Python source consumes processor resources. Note This output reports in this section have been reformatted to fit on the page. Lines ending with backslash (\) are continued on the next line. Running the Profiler¶ The most basic starting point in the profile module is run(). It takes a string statement as argument, a
久しぶりのエキスパートPythonプログラミング補足記事です。今回はプロファイリングの補足です。 Pythonは標準ライブラリにプロファイラ(profile/cProfileモジュールのProfileクラス)を持っていて、 その結果を格納しているpstats.Statsクラスにはプロファイル結果を解析するのに必要な機能(実行時間でのソートや、呼び出し元/呼び出し先の表示など)が一通りそろっています。これらのクラスについてはエキスパートPythonプログラミングで使い方を解説してあります。 コマンドラインで作業するときにはIPythonからStatsオブジェクトを直接操作してプロファイル結果を調べられるのですが、やはりプロファイル結果はグラフィカルに表示してくれた方が見やすいものです。特に「エキスパートPythonプログラミング」の中でも言及されているKCacheGrindというGUIツール
Private content!This content has been marked as private by the uploader.
Python旅館ネタ。これまた、tmatsuo氏に教えてもらた。 googleAppEngine内で、何の処理にドンだけ時間が掛かってるとか、どの処理が何回呼ばれてるとかそういうのが知りたい時にprofileを使うとある程度分かります。 やり方は凄い簡単で、デフォで使ってるmainメソッドを、real_mainメソッドに改名してprofile_main()から呼ぶだけ、profile_main()内では、<pre>タグ使ってhtmlを追加する処理が書いてあるのでみたい要素をprintするだけです。この方法の他にLoggingに回す方法もあるらしいです。 def main(): logging.getLogger().setLevel(logging.DEBUG) logging.info('-'*80) urls = [('/ngram/api/post', UpDate), ('/ngr
PythonSpeed 多くの人がPythonプログラムの速度について心配を持っています。でもPythonを使わないと、堪らないくらい実行速度上のロスがありますよね? 中には「なんだ、インタプリタのスクリプト言語か、まるっきり遅いや」なんて結論づける人もいます。また、Pythonを実際に試してみて、実行効率が十分なことに気づく人もいます。でも時には、 とっても遅いプログラムができあがることもあります。 実行速度がそんなに重要?ホントに? 多くの人が必要以上に速度に取りつかれていて、このような種類の問題では、Cが優れた実績を示していることから、全ての面で優れた言語だと考えています。別の人々は、開発の速度がより重要で、Pythonを選ぶのはそのような時に限り、まあそれなりの速度だろうと考えています。そして頻繁に、期待を超えた速度で動いていることに驚かされています。時には、同じ開発時間を費やした
Python Performance Tips このページはPythonプログラムの実行効率を改善するさまざまなTipsやトリックの紹介に特化しています。誰から得た情報であっても、その情報源を紹介するつもりです。 "fast python"ページをはじめて書いた1996年以降も、Pythonは著しく変化してきました。このことは、幾つかの規則も変化しているということを意味しています。そこで、他の誰かがこのページのメンテナンスを手伝ってくれるという期待をもって、ページをPython wikiに移動させました。 注意:これらのTipsはいつでも、読者のアプリケーションや、実際に使用するバージョンのPythonで盲目的に受け入れるだけでなく、実際に試してみることができます。 これらの新しく独自に書かれたパッケージ、例えば Pyrex 、 Psyco 、 Weave や PyInline のようなも
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く