背景:我有一个巨大的DataFrame,有4000万行。我有一个巨大的DataFrame,有4000万行。我必须在一些列上运行一些函数。循环的时间太长了,所以我决定采用多进程。CPU:8核16线程 8核16线程 内存: 128GB
问题:我应该把数据分成几块?我应该把数据分成多少块?而对于这个数据集来说,多少个worker是合适的?
p.s. 我发现当我设置max_workers = 15时,所有线程都是100%运行。但如果我把max_workers改成40,它们就会下降到40%。
谢谢你
并行计算有三种类型。如果你的线程运行在cpu密集型的任务上,那么你可以增加你的worker数量,因为你想获得更好的性能,但如果它运行在io密集型上,增加它们就没有效果了。
你似乎是在做io-cpu密集型的任务,所以如果你增加工人数量,你可以得到很好的结果,直到没有竞争使用io资源(硬盘),所以在本地机器上,增加工人数量不是一个好的选择。
你可以使用Hadoop on GPS或AWS来完成这项工作。