2011-03-05

Python・AppEngine初学者の雑感

ここ最近、PythonでGoogle AppEngineを使ってプログラムを書いているのですが、どちらも始めたばかりなのでいろいろと新鮮な驚きや疑問に思うことなどがあります。新しいことを始めたときに学習記録を残しておくと後で見たときに面白いので、とりとめのない話ですがここに書いておきます。

Pythonについて

  • lenとdelがコレクションのメソッドになっていないのにはびっくりしました。
    • 「len」という名前の変数を使ったりしたらどうなるんでしょう。
  • 「Pythonのfor文は、いわゆるforeachのみで、C言語風のfor文は存在しない」「一般的な回数ループ処理をやりたいときは、等差数列のリストを作るrange関数を使って for i in range(10) のようにする」というのを知って、一貫性があるなーと思ったのですが、xrangeという関数があることを知ってちょっと微妙な気分に。
    • 「xrangeだとリストを生成しないので、ループ回数が大きいときはxrangeの方が速い」との話ですが……for文でrangeを使っている場合には内部で勝手に最適化(実際にリストを生成しないようにする)をしているのかと思っていました。
    • あと、この両者を使い分ける基準はどのあたりにあるんでしょうか。少なくとも一般的な回数ループ処理では、常にxrangeを使っていればいいようにも思いますが。

AppEngineについて

  • 無料枠では「1日あたり10万タスクまで」となっているようですが、意外にきつい制限かも。
    • 普通にテストしていても1000タスクくらい軽く消費してしまいます。
  • ローカル環境におけるタスクキューの動作がいまいち信用できない感じです。
    • たまにキューに積まれたタスクの消化が止まってしまうことがあります。
      • ですがそんな場合でも、管理画面(http://localhost:8080/_ah/admin)をブラウザで開いて再読み込みすればタスクの実行が再開されたりします。理由は不明。
    • そういえば、管理画面のタスクキューの「Purge」ボタンは「たまっているタスクをすべて実行する」みたいな挙動かと思っていました。実際には、タスクは実行されずにキューからクリアされるようです。
      • そういう挙動であれば「Flush」と表記するんですかね。CPUキャッシュの操作でもこれらの用語を使いますが、いつもどっちがどっちだかわからなくなります。

0 件のコメント:

コメントを投稿