Gma*_*man 5 python parallel-processing pandas
我想使用 Pandas 并行读取一个大的 .xls 文件。目前我正在使用这个:
LARGE_FILE = "LARGEFILE.xlsx"
CHUNKSIZE = 100000 # processing 100,000 rows at a time
def process_frame(df):
# process data frame
return len(df)
if __name__ == '__main__':
reader = pd.read_excel(LARGE_FILE, chunksize=CHUNKSIZE)
pool = mp.Pool(4) # use 4 processes
funclist = []
for df in reader:
# process each data frame
f = pool.apply_async(process_frame,[df])
funclist.append(f)
result = 0
for f in funclist:
result += f.get(timeout=10) # timeout in 10 seconds
Run Code Online (Sandbox Code Playgroud)
虽然这会运行,但我认为它实际上并没有加快读取文件的过程。有没有更有效的方法来实现这一目标?
小智 1
仅供参考:我正在大约 4 秒内读取 13 MB、29000 行 csv。(不使用并行处理)Archlinux、AMD Phenom II X2、Python 3.4、python-pandas 0.16.2。
您的文件有多大以及读取它需要多长时间?这将有助于更好地理解问题。您的 Excel 工作表非常复杂吗?也许 read_excel 难以处理这种复杂性?
建议:安装 gnumeric 并使用辅助函数 ssconvert 将文件转换为 csv。在您的程序中更改为 read_csv。检查 ssconvert 使用的时间和 read_csv 花费的时间。顺便说一句,python-pandas 从版本 13 .... 16 开始有了重大改进,因此有助于检查您是否拥有最新版本。
| 归档时间: |
|
| 查看次数: |
1096 次 |
| 最近记录: |