HyperAI超神经
Back to Headlines

自由线程化 Python 3.13t 让数据框处理速度翻倍

a day ago

在多核处理器时代,数据处理并行化一直是提高性能的关键途径。然而,直到最近,在Python中实现线程并行处理仍然受制于全局解释器锁(GIL),这限制了多线程CPU密集型操作的有效性。为了解决这一问题,Python 3.13推出了“实验性的自由线程构建”,去除了GIL,使得真正的多线程并发成为可能。 这一改进带来了显著的性能提升。例如,使用StaticFrame 3.2进行每行函数应用(如计算DataFrame某行中所有偶数之和)时,性能提升超过60%。在一个包含一百万个整数的方形DataFrame中,单线程处理耗时21.3毫秒,而使用自由线程的Python 3.13t(表示实验自由线程构建)并行处理(4个线程)仅需7.89毫秒。 相比之下,使用标准Python 3.13进行同样的操作,多线程处理反而会降低性能。单线程处理时间为17.7毫秒,而多线程处理(4个线程)耗时几乎翻倍,达到39.9毫秒。 自由线程Python的性能优势不仅体现在特定的测试用例中,还适用于各种形状和类型的DataFrame。测试结果显示,无论是在MacOS还是Linux环境下,使用自由线程模式都能大大减少处理时间,特别是在更大的DataFrame上,提升幅度超过70%。即使是较小的DataFrame(包含一万个元素),使用自由线程的Python也能显著减少处理时间,尤其是对于高行数的DataFrame。 为了充分利用多线程的优势,同时避免线程竞争或数据竞赛的风险,StaticFrame采用了不可变数据结构的设计。具体来说,StaticFrame中的NumPy数组被设置为不可写,禁止原地修改,从而确保了线程安全,消除了锁机制或防御性复制的需求。这种设计减少了跨列遍历和行生成的成本,使得整个DataFrame可以用一个二维数组表示,进一步提升了性能。 然而,使用自由线程Python也不是没有代价。单线程操作的性能会略有下降,这是由于自由线程模式引入了一些额外的开销。尽管如此,自由线程Python的总体性能依然是值得期待的,预计在未来版本的Python 3.14t及以后会有更多的优化。 业内人士认为,Python 3.13的自由线程构建是一项重要的技术进步,它打破了长期以来困扰Python并行处理的瓶颈。虽然目前仍处于实验阶段,但随着越来越多的关键库开始支持这一特性,自由线程Python有望成为未来的标准配置。这一改进不仅对DataFrames处理有巨大影响,还可能推动其他类型的大数据处理任务的性能大幅提升。StaticFrame凭借其不可变的设计和对自由线程的支持,已经成为了探索这项新技术的重要工具之一。 公司背景方面,StaticFrame是一个专注于高性能数据处理的Python库,它的设计旨在解决数据科学家和工程师在处理大规模数据集时面临的性能挑战。Python社区对此技术的积极反应表明,去除GIL将是Python未来发展的一个重要方向。

Related Links