gpt4 book ai didi

python - 并行使用Python的dask将多个CSV分别读取到数据帧列表中不起作用

转载 作者:行者123 更新时间:2023-12-01 06:46:22 25 4
gpt4 key购买 nike

我有一个情况,我需要从 S3 读取多个 CSV,并将每个 CSV 单独存储为数据帧列表中的数据帧。当我逐一阅读每个 CSV 时,它起作用了。我正在尝试并行读取它们以加快速度,并尝试在此 answer 中重新创建并行过程。 。但是,当我这样做时,进程就会挂起。可能出了什么问题? dask 中是否有某些内容不允许此操作?

# Load libraries
import pandas as pd
import dask.dataframe as dd
from multiprocessing import Pool

# Define function
def read_csv(table):
path = 's3://my-bucket/{}/*.csv'.format(table)
df = dd.read_csv(path, assume_missing=True).compute()
return df

# Define tables
tables = ['sales', 'customers', 'inventory']

# Run function to read one-by-one (this works)
df_list = []
for t in tables:
df_list.append(read_csv(t))

# Try to run function in parallel (this hangs, never completes)
with Pool(processes=3) as pool:
df_list = pool.map(read_csv, tables)

最佳答案

你试图将 Dask 嵌套在另一个并行解决方案中,这很奇怪。这可能会导致性能不佳。相反,如果您希望使用进程,我建议您将 Dask 的默认调度程序更改为多处理,然后照常使用 dd.read_csv

dfs = [dd.read_csv(...) for table in tables]
dfs = dask.compute(dfs, scheduler="processes")

有关 Dask 调度程序的更多信息,请参阅 https://docs.dask.org/en/latest/scheduling.html

关于python - 并行使用Python的dask将多个CSV分别读取到数据帧列表中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59203911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com