windows10で大規模データを取り扱うときの注意点(Search Indexer, Python)

windows10でCSV形式などの大規模テキストデータを取り扱う際の注意点として、ハマったことをメモしておきます。

問題1:Windows Search Indexer が何時間も走りっぱなしになる

(Pro以上? Homeでは同事象出た記憶がないかも。。)

1GBくらいのCSVファイル150本をダウンロードして処理をしていたところ、CPUファンが回って止まらない。。
タスクマネージャーを確認すると、Windows Search IndexerがCPUを50%程度使っている様子。
待てど暮らせどOS再起動すれどプロセスは終わらず、CPUファンは回りっぱなし。。

原因:大規模テキストデータがインデックス作成の対象になっていた(様子)

デスクトップにフォルダを作って格納したテキストデータがインデックス作成の対象になっていた(様子)。
デフォルトの設定では、ユーザフォルダ配下は隠しフォルダである AppData を除く全フォルダが対象。
拡張子でも対象の判定があるが、今回処理していたファイルの拡張子は.csv。こちらはめでたくインデックス作成対象となっておりました。

100GBくらいのテキストファイルからインデックス作ってりゃ、そらいつまで経っても終わらんなと。

対応:大規模テキストデータを格納したフォルダをインデックス作成対象から外した

以下手順で対応。

  1. windowsメニューの横「ここに入力して検索」にカーソルを合わせて「インデックスのオプション」を起動
  2. 変更ボタンを押下
  3. 対象データが格納されていたフォルダをインデックス作成対象から外す

上記の操作後、しばらくしたらCPUファンが止まり、タスクマネージャーからwindows search indexerが消えていた。。。

問題2:大量メモリを扱うPythonの処理がMemoryErrorでABENDする

(こちらはwindows10固有ではなくpythonの問題か)

Pythonで大きめのテキストファイル(1GBくらい)を処理する際に MemoryError が出て PythonスクリプトがABENDする事象に見舞われました。windowsにはメモリ20GBを積んであるので、メモリ不足は全く考えられなかった。

原因:32bit版のPythonがインストールされていたため

32bit版Pythonの制約で、メモリを2GBまでしか扱えないようです。
ファイルのopenと処理で処理中に2GBを(瞬間的に?)超えてMemoryErrorが発生したようでした。

対応:64bit版のPythonをインストールして差し替えた

インストーラをダウンロードしてきて、64bit版Pythonをインストール、環境変数を書き換えて64bit版Pythonに差し替えたところ、同じPythonスクリプトが問題なく動作しました。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.