17 日目(晴れ)Python 漬けの一日
どうしても夜中に尿意で目が覚めるのが治らない。自分自身の体重で膀胱に圧力がかかっているとでもいうのか。 6:20 起床。暑くならぬうちにメシを済ませたい。
柳北公園に寄ってから 6:50 なか卯昭和通り店で朝食。 納豆がまたぞろ品切れなので朝そば+卵券消費。 あとからきた爺さんも納豆が品切れなのを嘆いている。
食後、橋を渡って馬喰町のミニストップに寄り道して雑誌棚をチェックしてから宿に戻る。
7:20 部屋に閉じこもる。
- [PV] Y31 // tiger YAMATO - YouTube: VJ GYO 最強決定戦にノミネートされるべき作品の一つ。
- Subprocess — Asyncio Documentation 0.0 documentation:
二つ目のコードは何らかの理由で終了コードが 1 で戻ってくる。
差し当たり
catをechoに置き換えると 0 に変わる。
昨晩就寝前に書いた画像ファイル処理スクリプトを非同期化したい。
むしろ画像編集のコードがうまくいかない。PIL の thumbnail() メソッドが画像を拡大してくれないので
resize() する必要があるのと、画像を回転するのが複合している状況で正常な画像が生成できない。
13:00 休憩に入る。30 分でチートスとロールケーキを食い終わる。 さっきのスクリプトは二つに分けるのがいいか。
wget がたまに「HTTP 0.9 を仮定する」というメッセージを出力するが、これは何だろうか。
画像回転だけをするスクリプトを書くことで PIL の rotate() のクセに気づく。
引数が 90 の倍数だと特殊な最適化が走るようで、これがかえって都合が悪い。
次のようにするしかない。
image_new = image.rotate(-90, expand=True)
image_new.save(filename)
テストコードを書きたいところだが、寿命の短いスクリプトなので使いながら直す。
Producer/Consumer パターンを習得した。
マルチスレッドのときは queue.Queue をキューとして利用する。
一方 asyncio を使うなら asyncio.Queue を使う。
マルチスレッド版に書き換えたらスレッドを停止できない。ド素人。
19:05 外出。秋葉原の中央通りまで足を伸ばして小諸そばで二枚盛り+大を食う。 閉店時刻が近いので慌ただしい食事になってしまう。
ドンキ秋葉原店に寄っておやつを調達しようとしたが失敗する。 めぼしいパン・菓子類がない。
20:20 ライフ神田和泉町店で明日以降のおやつを買っておく。
- ポテチ塩 (2)
- 白あんぱん
20:35 宿に戻る。やはりあんぱんは今食おう。 だいじょうぶだぁを観ながら麻雀の練習をする。ハイテイでアガれる局が妙に多い。
変なおじさんの着ているドカジャンが渋い色でいい。
22:40 入浴終了。
23:00 マルチスレッド版 Producer/Consumer プログラムの不具合の原因を突き止める。 何らかの理由で Producer スレッドで PIL オブジェクトを生成してキューに投入しても Consumer スレッドでキューから取り出せないようだ。したがってファイルパスをやり取りするように修正すればいい。 どうせ保存は Consumer でやるのだから。
