LoginSignup
8
10

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-01-11

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スクリプトが問題なく動作しました。

8
10
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10