Windows, macOS, Linux対応、魔法陣を無限に組み合わせて生成できるジェネレーターを紹介します。生成される魔法陣はSVGとPNGで出力でき、個人でも商用でも無料で利用できるフリー素材です。 以前ルーン文字で紹介したdaisy bellの新作アプリで、魔法陣はマンガや同人誌に使ったり、商用のプロジェクトでも完全無料の太っ腹ライセンスです。
# This code require Python 2.2.1 or later from __future__ import generators # needs to be at the top of your module def ResultIter(cursor, arraysize=1000): 'An iterator that uses fetchmany to keep memory usage down' while True: results = cursor.fetchmany(arraysize) if not results: break for result in results: yield result To iterate through the result of a query, you often see code like this: # wh
Pythonのイテレータ(iterator)とジェネレータ(generator)についてまとめてみます。 (追記2018.12.25: Python3の文法に全面的に置き換えました) イテレータ: 要素を反復して取り出すことのできるインタフェース ジェネレータ: イテレータの一種であり、1要素を取り出そうとする度に処理を行い、要素をジェネレートするタイプのもの。Pythonではyield文を使った実装を指すことが多いと思われる Python組み込みのコレクション(list, tuple, set, dictなど)はどれもイテレーション可能ですが、組み込みのコレクションを使った繰り返し処理ではあらかじめコレクションに値を入れておく必要があるため、以下のようなケースではイテレータやジェネレータを自分で実装したいというケースがあると思います。 無限に繰り返すイテレーション 要素すべてをあらかじめ
def fetchmany(cursor, size=1000): """ 1000件づつ fetch する """ while True: rows = cursor.fetchmany(size) if not rows: break for row in rows: yield row # cursor を取得 import MySQLdb conn = MySQLdb.connect() conn.cursorclass = MySQLdb.cursors.DictCursor # select した結果を dict で取りたい時等 cursor = conn.cursor() # 検索 cursor.execute('SELECT foo FROM bar WHERE baz = %s', ('piyo', )) for row in fetchmany(cursor): pri
ジェネレータ使うとメモリ食わないし処理が早いと思っているんですが、データベースのデータもジェネレーターで取得すると早いのかな。 以下のようにデータベースのデータを取得するジェネレーター関数を作ってみました。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く