型アノテーション生成ツール MyPy Blog を読んでいて PyAnnotate の記事が気になったので調べてみました。せっかくなので調べたことのメモを簡単にまとめておきます。 Dropbox releases PyAnnotate -- auto-generate type annotations for mypy 2017年11月15日に Dropbox 社が PyAnnotate という Python の型アノテーションを自動生成するツールをオープンソースとして公開しました。この記事の中では Dropbox 社は120万行以上のソースコードに型アノテーションがついていると紹介しています。さらにそれは Dropbox 社のコードベースにおける総行数のうちの約20%であるそうです。 こういった大規模なコードベースに対して型アノテーションを人間の手でつけていくのは相当な労力を伴います。記
これらのアノテーションは実行時に普通の __annotations__ 属性として参照できる一方で、 実行時には型チェックを行いません 。その代わり、この提案は独立したオフライン型チェッカーの存在を仮定しています。ユーザーはそのような型チェッカーを使って自主的にソースコードを検査できます。基本的にこういった型チェッカーは非常に強力なリンター (linter) として機能します。(もちろん似たようなチェッカーを使って個々のユーザー向けに契約による設計 (Design By Contract) の強制や JIT 最適化を実行時に行うこともできるはずですが、そういったツールはまだ実用レベルにはなっていません。) この提案は mypy [mypy] に強く触発されています。例えば、"整数型のシーケンス" の型は Sequence[int] のように記述します。角括弧を使うことで言語に新しい構文を追
pytestでは、monkeypatchを使ってmockを作成できます。 Monkeypatching/mocking modules and environments — pytest documentation モンキーパッチ/モックのモジュールと環境 今回は、monkeypatch.setattr()を使って、 プロダクションコードのメソッドや関数 Python標準モジュールのメソッド を差し替え(mock化)してみた時のメモです。 目次 環境 使い方 プロダクションコードのメソッドを差し替え 標準ライブラリを差し替え 差し替え対象モジュールをimportせずに差し替え 定数の差し替え 複数の引数を持つメソッドを差し替え プライベートメソッドの差し替え 複数の戻り値を持つメソッドの差し替え 例外を送出するように差し替え プロダクションコードがimportしているモジュールの属性を差し
TL;DR Pythonでコルーチン使いつつ、割とスレッドモデルっぽい動作をasyncioを使って実現する。 やりたいこと 複数のコルーチンが非同期に実行される前提 それぞれ個々のコルーチンの実行が終わった時点で、返り値を即座に受け取って処理したい もう少し詳しく 参考:Pythonにおける非同期処理: asyncio逆引きリファレンス(すごくタメになるのでオススメ) ここの「並列で処理を行いたい(固定長)」のところに、asyncio.gatherとasyncio.waitを使った例がそれぞれ載っているけど、返り値の処理はいずれも__全部のコルーチンの処理が終わってから__行われるようになっていた。 これを、__各コルーチンが終了した時点で即座に__返り値の処理もさせつつ他のコルーチンの終了も待つ、ということをしたい。 利用したバージョン Python3.7.1 です。 ちょっとバージョン
#! /usr/bin/env python # -*- coding: utf-8 -*- import sys import re import MySQLdb import math import more_itertools from joblib import Parallel, delayed def checker(lines: list): sql = 'select * from filelist where size=%s' conn = MySQLdb.connect(user='mysqluser',passwd='mysqlpassword',host='mysqlhost',db='mysqldb', charset='utf8') cur = conn.cursor() cur.execute('SET NAMES utf8') ret = [] for li
この記事は,Pythonを少しでも高速に実行するための方法をまとめたTips集です. 随時更新予定です. グローバル名前空間で大きな処理を書かない Pythonではメソッド内に処理を書かずにグローバル名前空間に処理を書くこともできます。 Pythonは変数アクセスを名前空間ごとの辞書(ハッシュマップみたいなもの)で検索することで実現しています。 グローバル名前空間の辞書にはデフォルトの状態でいくつかの要素が追加されているので、メソッド内でローカル変数にアクセスする場合に比べて変数アクセスのコストが重くなります。 なので、グローバル名前空間でforループなどを回すと変数アクセスのコストが無視できなくなるので、forループを回すなどの大きな処理を行う場合はメソッド内に処理を書くようにしましょう。 グローバル名前空間にforループの処理をべた書きした場合と、メソッド内に同じ処理を書いた場合での実
IIJ ネットワーク本部アプリケーションサービス2部所属。 メールサービスの運用業務に従事し、日々世界の悪と戦う一児の父親。社内 Power Automate エバンジェリスト(自称)。M3AAWG member / openSUSE Users / WIDE Project メンバー。趣味は大喜利。はがき職人。 【IIJ 2017TECHアドベントカレンダー 12/6(水)の記事です】 JSON ファイルを CSV ファイルに変換したい 異なったサービスやアーキテクチャ間でデータをやり取りをしたいときに、JSON 形式を使うことはよくある話です。構造化されたデータを適切に表現するのにもってこいですし、大規模運用に欠かせない Elasticsearch も一瞬で JSON 形式の結果を返してくれます。 しかし、この JSON 形式、何らかの理由があって目で紐解こうとすると厄介です。大変読み
皆さん,pythonで機械学習のコードを書くときに,どのような環境で実装してますか?私は師匠もおらず,自分なりにいろいろ試していたところpudbに落ち着きました.pudbはデバッガーでpdbにUIが付いたようなものになります.pdbはC++でいうgdbみたいなもんですが,まぁガッツリ使うのは辛いです.pudbは下記の画像のようにターミナル上でグラフィカルにデバッグをできます. pudbを使うとどのようなことができるのか,この記事ではgifアニメーションをもとに紹介します. なぜpudbが便利か,AtomやVS Codeは使わないの? 動作例の説明の前に,簡単にpudbに落ち着いた理由を説明しておきます. 私の環境だと,GPUが載ったマシンが手元になく(AWS,大学,会社),リモート(SSH経由)で開発する必要がありました.マシンが物理的に近くにあるときは,そのマシン上でVS Codeを動か
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く