pandasをマルチスレッドで扱うときの注意

pandasのDataFrameを複数スレッドから同時に読み込むと以下のようなエラーが出たりする。

/python3.7/site-packages/pandas/core/internals/managers.py", line 326, in _verify_integrity
   "Number of manager items must equal union of "
AssertionError: Number of manager items must equal union of block items
# manager items: 6, # tot_items: 7

↑のエラーでぐぐっても、カラムがずれてるとかしか出てこない。カラムを見ても一致してた。マルチスレッドで書き込みは注意するけど、読み込みは注意していなかったから、原因がわからずハマった。

原因

原因はこれ。読み込み系の関数にmemoizationが入っていて、書き込みが発生するらしい。c++だとconstがつけられないから気付けるやつ。