_memoizeああ。シングルトンパターンに似ている。メモ化ってそういうことかー。ハッシュキーを生成し、結果をグローバルな辞書に格納します。ここで、ハッシュを作成するためのショートカットとしてpickleを使用しています。引数として渡されたすべてのオブジェクトの状態をpickleによって一意なデータに変換してハッシュ化しています。スレッドやソケットのように、適切なハッシュ化することができないオブジェクトが引数として渡されると、PicklingErrorが発生します。pickleを使ってハッシュキーにしてんのか。これは何かで使えそうだ。durationパラメータによって、最後の関数呼び出しから指定された以上の時間が経過したときにキャッシュされた値を無効にする機能も実装しています。最後の呼び出しからの時間経過でキャッシュを無効にするってあたりは、シングルトンパターンと違うところやな。関数呼び出しにおけるキャッシュ的な振舞いがメモ化っていうことか。