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がつけられないから気付けるやつ。