2012-02-29 14 views
1

私は、Python CSVリーダーを使用して巨大なCSVファイルを読み込み、各列のデータを検証し、次に各行を新しいファイルに書き込む、Pythonで書かれたデータ処理タスクを持っています。別のフォーマット。その後、データはデータベースに一括ロードされます。この新しいCSVの作成には約60分かかりますが、負荷の持続時間は重要ではありません。Windows上のPython 3でのマルチスレッド処理

私はCSVの作成をスピードアップしたいと思います。タスクがCPUバウンドであるため、明白な解決策は、サーバーのすべてのコアを使用して、ファイルのセクションを並行して処理することです。

http://wiki.python.org/moin/ParallelProcessing、特にParallel Pythonライブラリ(特に私が必要としているようだが、http://www.parallelpython.com/content/view/17/31/)でもPython 3/Windowsでは動作しないようだ。

私のニーズを満たす並列処理フレームワーク、または私がしようとしていることを達成するための最良の方法に関する他のアドバイスを知っている人はいますか?私はフレキシブルなものを探していますが、うまくいけばホイールを再発明したり、面倒な詳細を扱わなくてもかまいません。

答えて

3

スレッドを使用することはできますが、GILでスレッドをロックしてしまう可能性があります。ロックを心配する必要があります。

したがって、組み込みのmultiprocessingモジュール、具体的には「Pool」オブジェクトを使用することをお勧めします。デフォルトでは、プールはマシンにコアを持つものと同じ数のワーカープロセスを作成します。

メインプロセスでは、ワーカーのプールを作成します。たとえば、Pool.map_async()またはPool.imap()を使用して、iterable形式であれば、すべてのデータに関数を適用できます。 Poolオブジェクトは、あなたの面倒な詳細を追跡します。

関連する問題