(訳注:2016/3/9、いただいたフィードバックを元に記事を修正いたしました。) 注意: この記事で書かれている機能は、大部分がPython 3.4で導入されたものです。ネイティブコルーチンとasync/await構文はPython 3.5でサポートされました。そのため、本記事に記載されているコードを試す場合はPython 3.5の利用をお勧めします。 ジェネレータは値を 生成する 関数です。普通、関数は return で値を返したあと、その下層のスコープは破棄します。関数を再度呼び出す場合、その関数はゼロから起動されることになります。つまり1回限りの実行となります。しかしジェネレータ関数は値を yield で返し、関数の実行を一時停止します。その後、関数を呼び出したスコープにコントロールが移ります。関数を再び呼び出して次の値を(存在すれば)得たい時は、実行を再開することができます。では
Python Advent Calendar 2013 の4日目です。 Python 3.4 で標準ライブラリに追加される asyncio を触ってみます。 なお、 Tulip とは asyncio のリファレンス実装のプロジェクト名です。 背景 Python はよく非同期 I/O プログラミングに使われます。 Twisted, Tornado, gevent, eventlet, pyuv などのフレームワークがあります。 これらのフレームワークの問題点として、ライブラリの再利用性の低さが挙げられます。 たとえば Twisted 用に書かれた XMPP ライブラリは、そのままでは Tornado で 利用することができません。 この問題の解決策として、良くイベントループの乗り入れが行われます。 GUIアプリケーションに組み込む場合などを考えて、多くのフレームワークが最初から イベントルー
山本泰宇です。こんにちは。 運用本部では最近 Python3 への移行を進めています。そちらの話は別途ご紹介する予定ですが、今回は Python3.4 で追加された asyncio モジュールの使いかた(というか落し穴)を解説します。先に結論を書いておくと、Python3.5 の改良を待つのが吉という話です。 サンプルとして複数の SSH を一斉に呼び出してうまいこと処理してくれる passh を GitHub で公開しています。実際に社内で利用しているものをデチューンして使いやすくまとめたものです。 本題の asyncio ですが、Python3 で非同期 I/O 処理を実現するために追加されたイベント駆動処理のフレームワークです。最初に書いておきますが、以下で言及する難ありな点のいくつかは Python3.5 で改良される予定のようです。[PEP-0492, PEP 492 vs. P
橘玲の『「読まなくてもいい本」の読書案内』を読んだので、感想とメモをまとめておく。 この本、タイトルは『「読まなくてもいい本」の読書案内』だが、実際には「読まなくていい本」はほとんど紹介されていない。紹介されているのは、当たり前の話かもしれないが読むべき本だ。他の読書案内本と異なっているのは、”こういう本は読まなくて良い”と、ばっさり切り捨てているところ。読むべきか・読まなくてもよいかの基準は、20世紀後半に爆発的に進歩した科学研究の成果に置いている。著者は、この時期に起きた科学研究の大幅な進歩を”知のビッグバン”、”知のパラダイム転換”と呼び、これ以前に書かれた本は(とりあえず)読む必要がないと言い切る。古いパラダイムで書かれた本は捨てて、新しいパラダイムで書かれた本を読もうという話だ。ちょっと乱暴な分け方ではあるが、1980年代に大学生だった私には案外納得できるものだった。学生時代に最
先日mattnさんの記事を読みました。 golang の http.Client を速くする nettというパッケージを使って 名前解決の結果をキャッシュすることで、http.Clientを早くするというものです。 この記事に関して、ちょっと疑問に思ったことがあったので、検証してみました。 疑問 疑問に思ったのは以下の点です。 名前解決遅すぎでは? ベンチマークの結果を見ると5億ns(=500ms)ほど速度が改善しています。 3つのURLに対してリクエストを投げているので、初回を除く2回DNSのキャッシュがヒットし、 名前解決2回分の速度改善になるはずです。 と、いうことは、名前解決1回あたり250msかかっている計算になります。 googleのsearchは302でリダイレクトがかかるので、Client.Getの呼び出し1回あたり2回リクエストが飛ぶ、 ということを計算に入れても100m
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く