python - 使用延迟(DASK)读取大型 CSV 文件
问题描述
我delayed
用来读取许多大型 CSV 文件:
import pandas as pd
def function_1(x1, x2):
df_d1 = pd.read_csv(x1)
# Some calculations on df_d1 using x2.
return df_d1
def function_2(x3):
df_d2 = pd.read_csv(x3)
return df_d2
def function_3(df_d1, df_d2):
# some calculations and merging data-sets (output is "merged_ds").
return merged_ds
function_1
: 导入数据集 1 并进行一些计算。function_2
: 导入数据集 2。function_3
:合并数据集和一些计算。
接下来,我使用一个循环来调用这些delayed
函数。我有很多 CSV 文件,每个文件都超过 500MB。这是使用 DASK ( delayed
) 完成我的任务的合适程序吗?
解决方案
是的,请继续延迟您的功能并将它们提交给 Dask。最占用内存的可能是function_3
,您可能需要考虑一次可以在内存中保存多少个 - 使用分布式调度程序来控制您拥有的工作程序和线程的数量以及它们各自的内存限制https:// /distributed.readthedocs.io/en/latest/local-cluster.html
最后,您肯定不想返回最终合并的数据帧,这肯定不适合内存:您可能意味着聚合它们或写出其他文件。
推荐阅读
- amazon-web-services - Kinesis 流身份验证
- javascript - 服务器端处理 Jquery Datatables Sharepoint
- oracle - 如何在oracle表中插入特殊字符?
- java - 更新数据时出现多个 if 语句
- python - 在 Pygame 中,每次点击都会触发两次跳转
- python - 如何将自定义事件添加到 PyQt5 事件循环
- r - R:如何确定哪些变量与缺失的数据字段相关联
- docker - 如何使用入口 nginx 控制器设置负载均衡器
- c++ - 尝试实现 CRTP 时出现“对非静态成员的非法引用”
- python - TypeError:float() 参数必须是字符串或数字,而不是“张量”