Pythonista向けにGo言語入門を書いてみた。 Pythonならどう書くかわかってる人がgoで書く場合にどうすればいいのかをまとめました。 「python:」と「go:」の内容はできるだけ等価になるようにしてます。 表示のされかたとかは多少差はありますが、処理自体はより同じ意味になるように書いています。
class APITestCase(TestCase): @responses.activate def test_api(self): import api # setup responses.add( responses.GET, 'https://example.com/api/v3/users', status=200, body="[{'user': {'id': 1, 'username': 'test'}}]", content_type="application/json", ) # test api.get_users() assert responses.calls[0].request.method == 'GET' assert responses.calls[0].request.url == 'https://example.com/api/v3/users'
インターネットでよく解説されているシンプルなコードは上のようなものだと思いますが、このコードをプロダクションで使用すると、対象のサーバーが応答しない場合フリーズしてしまう可能性があります。timeoutが設定されていない、つまり、最大で何秒待機すればよいか指定されていないからです。Webサービスの場合、待機中はユーザーに応答できなくなるので、本当は別の依存しているサーバーに責任があるのに、ユーザーにはあなたのWebサービスに問題があるように見えてしまうかもしれません。 Timeout を設定する必要性 ですから、timeout を設定しましょう。数秒待って応答が来なかったらエラーとして処理すればよいのです。 requests公式のドキュメントでもtimeoutを設定することが推奨されています。 Most requests to external servers should have a
PyPyは同じソースを動かしてもPythonよりたいてい速いのですが、遅くなることもあります。その対処法がいくつかあるので紹介していきます。 今回はリストのソートです。こんなコードを動かしてみます。 from itertools import * import time def gen_S(): S = 290797 while True: S = S * S % 50515093 yield S def sort_long(N): a = list(islice(gen_S(), N)) t0 = time.clock() a.sort() print time.clock() - t0 N = 10 ** 7 sort_long(N) これを動かすと、Pythonで9秒、PyPyで25秒でした。 これがなぜ遅いかというと、リストに多倍長整数が混じっているからのようです。この要素は大きさ
pythonでもdictに型を付けたいですね。一応TypedDictという型を定義したいという動きになっています。ちなみにまだこの機能はexperimentalになっているので。mypy_extensionsの方に入っています。 import mypy_extensions as mx class Pair(mx.TypedDict): left: int right: int d0: Pair = {"left": 0, "right": 0} # もしくは d1 = {"left": 0, "right": 0} # type: Pai mypy_extensions ついでに寄り道、mypy_extensionsについて、基本的にpythonの型関連の機能は以下の順でnitghtlyからstableというような遷移をします。 mypy_extensions -- experiment
Kinds of types¶ We’ve mostly restricted ourselves to built-in types until now. This section introduces several additional kinds of types. You are likely to need at least some of them to type check any non-trivial programs. Class types¶ Every class is also a valid type. Any instance of a subclass is also compatible with all superclasses – it follows that every value is compatible with the object ty
pythonの型チェッカとしてはMypyが有名だと思います。私は普段Mypyを使っていますが、Facebookの開発したPyreというのがあることを知ったので使ってみました。 この記事では「FacebookはなぜPyreを開発したのか」とか「MypyとPyreの特徴比較」とかの話はしません。あくまで自分が使ってみた所感をまとめるだけです。 インストール 公式サイトにあるとおり、python>=3.5でpip install pyre-checkとするだけです。 いきなりVSCode拡張をインストール(おすすめしません) これまた公式サイトの手順に従えば、チェックに引っかかったところをVSCodeで表示することができます。 pyre initとするとソースのディレクトリを聞かれるので指定します。あとは普通のVSCode拡張と同じで、インストールして再読込します。 おそらくおびただしい数のエラ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く