技術ブログだがね

名古屋出身ソフトウェアエンジニアのブログ

Python におけるリトライ抽象を再考する

Python におけるリトライ抽象を再考する
前回記事では、オプション引数をとるデコレータを楽に定義できるデコレータである kwops_decorator を作成しました。 今回は実演がてら、Python のリトライ処理記述ライブラリ Tenacity を題材に、よく使うリトライ表現を抽象化してみます。 Tenacity は基本的に、実行対象の関数にデコレータを付けることで、その関数はリトライされるべきであることを表現するのですが、関数内でリトライ回数をカウントするためには外のスコープに変数や、クラスにインスタンス変数を置いて自分で数える必要があり、カウントのリセットなども考慮すると微妙に面倒です。そこの改善を主目的に、kwops_decorator を活用し Tenacity のデコレータをラップします。 …

Windows では読み取り専用属性が付いているファイルは本来消せない

Windows を長年使い続けてきて今更知ったことなのですが、Windows ではファイルに読み取り専用 (Read-only) 属性が付いていると削除時に影響を及ぼします。エクスプローラーでは、ファイルに読み取り専用フラグが付いていても確認なしに削除できますが、本来は読み取り専用属性を解除してからでないと消せません1。 …

PuLP での論理和と論理積の線形化

前回の記事では補助変数を利用することで、論理包含のある一見すると非線形な制約を線形制約へ変形し、PuLP で整数制約問題を解くことができました。 現実の問題を扱う際には、「ある特定の状況が望ましくないので、この条件を満たす場合にのみペナルティを足そう」というモデリングを行いたくなることが容易に想像できます。 そこで、論理積の線形表現を PuLP で実現する抽象を導出してみました。論理和もついでにやっておきました。 …