0:10 ベッドに潜る。寝る。

7:10 起床。外出。まず柳北公園に寄り道する。掃除中なのでまた来ることにする。

7:35 なか卯昭和通り店で朝食。納豆が朝定食。

柳北公園に立ち寄ってゴミを処分。急に腹が痛くなる。日陰で腰掛けて休む。 おやつを調達するのを忘れてそのまま宿に戻る。トイレでブリブリする。

デスクワークを始める。Python をやる。直近の学習状況を整理しよう。

  • 並行実行 — Python 3.8.3rc1 ドキュメント
    • threading: マルチスレッドからなるプログラムを作る。
      • Thread はコンストラクター直接利用、サブクラス化の手法、join() を理解した。
      • Lock, Semaphore, Condition, Event などの同期概念の理解に自信がない。queue.Queue を使えるから後回しになった。
    • multiprocessing: マルチサブプロセスを生成するプログラムを作る。
      • threading の API と一致している要素は理解する。
      • Processthreading.Thread と酷似している。あとから何とかなる。
      • Pool
        • map() などを使ったいちばん単純な用法は理解した。
        • 非同期バージョンの API を理解していない。
      • Queuequeue.Queue と同じように使うことを理解した。
        • .done_task() および .join() がない。JoinableQueue にはある。
      • Pipe
        • 目的は Queue と似ている。.recv().send() でサブプロセス間の通信に利用する。
      • Lock などの同期概念理解は threading のそれと同じなので同時に理解する。
        • キューやパイプを活用することで同期は避けることを理解する。
        • マルチサブプロセスプログラミングではそもそも同期を必要としないことを理解する。
      • サブプロセス間の状態の共有は避けるべきであることを理解する。
      • Manager は手つかず。データ共有に関係するクラスだから後回し。
      • multiprocessing.connection 関係は理解していない。コードがソケットプログラミングのそれに似ている。
      • ガイドラインを理解する。
        • サブプロセスに対する join() がマルチスレッドプログラミングにおけるスレッドに対するそれ以上に重要であることを理解する。
        • サブプロセスを強制終了することは全力で避けることを理解する。
        • 標準入力の扱いが微妙であることを理解する。
    • concurrent.futures: Executor 各種を利用するプログラムを作る。
      • ThreadPoolExecutorProcessPoolExecutor の特性の違いを理解した。
      • .sumbit().map() の違いを理解する。
      • クラス Future を理解する。asyncio のそれと同じ概念か確かめる。
      • 関数 as_completed()wait() を理解する。
    • subprocess: プロセス開始、パイプ接続をするプログラムを作る。
      • subprocess.run() が高水準 API なのでこれから理解する。
        • よく使うはずのキーワード引数を覚える。
        • 返り値のクラス CompletedProcess を理解する。
      • クラス Popen がラップされたものだと理解する。
      • Win32 API CreateProcess() に相当することを理解する。

12:25 multiprocessing 版 Producer/Consumer パターン画像回転スクリプトを書けた。 この枠組だとキューの join が不自然になるので、ソケットプログラミングの要領で空のタスクを pop したらワーカーサブプロセスを終えるでいい。

昼間の食料の貯蔵がポテチ二袋分しかないので近所に買い出しに行く。 肉のハナマサ浅草橋店でいいはずだったが、パンがないので遠出決定。

江戸通りのセブンイレブンに寄り道。奇跡的に二週間前に出たキンマが置いてある。 時世柄立ち読みしづらいので、むこうぶちを超速読でチェック。 多河と裕太の対戦、安永と秀の会話、江崎と後堂、最終卓へという感じだ。いずれしっかり読みたい。

西友浅草 ROX 店に移動。ワゴンにいい感じにパン類が積まれているがロールパンがない。

14:10 ドンキ浅草店に移動。ここでいい感じに買い物をする。250 円

  • レーズンロール (5)
  • ロール (5)
  • 大きなチョコデニッシュ

レジで 300 円出したと思ったら釣りがなかったので気づかぬ間に 50 円硬貨を出していたのか。 あとで所持金が出納帳の把握金額と一致しているか確認したい。

14:50 宿に戻る。おやつ休憩。

17:10 concurrent.futures の学習終わり。Executor の .submit().map() の処理時間を比較する。 両者を連続して呼ぶと、いつも後に呼んだほうが処理時間が短い。結果がキャッシュされている説が浮上。

20120426 H-L 米野智人9回逆転満塁ホームランにむせび泣く斉藤一美.mp4 - YouTube

19:10 外出。いつもの清洲橋通りに向かう。

19:40 ライフ神田和泉町店で晩飯を調達。419 円。

  • かき揚げそば
  • チーズフランス

19:50 部屋に戻る。そばの汁を開封するときに若干床にこぼす。急いで自前のスポーツタオルで拭き取る。 電子レンジで加熱している間に昼の釣り銭を確認する。問題ないようだ。

晩飯にする。書いてあるとおりの電力と時間で加熱したら熱い。

22:00 まで麻雀の練習をする。それから入浴。22:30 出浴。 また麻雀の練習をする。今晩はよく負ける。