1. mattn

    fixed typo

    mattn
Changes in body
Source | HTML | Preview
@@ -1,43 +1,43 @@
些細なことでも [multiprocessing](https://docs.python.org/ja/3/library/multiprocessing.html) 使うと便利だよ、という小ネタ。
## やりたいこと
``` python
from glob import glob
files = glob('data/*.csv')
len(files) # 40000
```
この 4万件の CSV ファイルを Pandas DataFrame として読み込みたい。
## 普通に読み込む
``` python
import pandas as pd
arr = [pd.read_csv(f) for f in files]
```
**約 59 秒** かかった。
## 並列で読み込む
[multiprocessing](https://docs.python.org/ja/3/library/multiprocessing.html) を使ってやってみる。
`p.map` には `pd.read_csv` を直接渡したり `lambda` を渡したりすることはできないっぽいので、 `read_csv` という関数を定義している。
``` python
import pandas as pd
from multiprocessing import Pool
def read_csv(f):
return pd.read_csv(f)
with Pool() as p:
- arr = p.map(read, files)
+ arr = p.map(read_csv, files)
```
**約 15 秒** で終わった。
`Pool` は並列数を指定しなければ CPU のコア数で並列処理してくれるはずだけど、12 コア積んだマシンで実行しても 12 倍速くなるわけではなかった。
しかし 4 倍速くなっただけでも十分ありがたい。