pandas 实现数据框架的独立创建

mrzz3bfm  于 2023-10-14  发布在  其他
关注(0)|答案(1)|浏览(139)

我有一个关于并行化DataFrame操作的一般性问题。
假设我有一个这样的操作(伪代码,dfdf1df2是 Dataframe )

  1. df1 = pandas_operations(df, arg1, arg2)
  2. df2 = pandas_operations(df, arg3, arg4)
  3. result = pd.concat([df1, df2])

其中pandas_operations是一个函数,它大量使用pandas API来处理数字。
在什么情况下可以并行创建df1df2(例如,用multiprocessing)有意义,以加快程序?
我问这个问题主要是因为pandas将大量计算繁重的任务委托给了numpy,而numpy(据我所知)在调用用C编写的代码时已经使用了多个内核。如果这是真的,那么我可以用multiprocessing并行创建df1df2,但是每个DataFrame的创建可能比顺序程序慢。

lbsnaicq

lbsnaicq1#

我不想让你相信我是这个领域的Maven,但我认为numpy所做的事情之间有很大的区别,它被称为SIMD,用于单指令,多数据,并允许矢量化操作以提高速度。这发生在CPU的架构级别。多处理是有几个CPU,每个都可以做SIMD,至少从我的理解。
我想阅读这篇文章,从一个更有知识的人,可能会有所帮助:Difference between SIMD and Multi-threading。它还谈到了SIMD和多处理之间的差异。
所以要回答第一个问题,它可能会更快(但这是非常高的水平,需要量化,我敢打赌这将取决于大小和数量的框架。为一些处理速度快的元素示例化新池可能会适得其反),以并行创建df1和df2,但由于df数据必须复制并传递给两个独立的进程,因此会占用更多的RAM。

相关问题