详细内容或原文请订阅后点击阅览
在自由线python中使用不变的数据框来解放性能
staticframe和python 3.13T如何使基于线程的并发启用自由线程python中无数数据范围的邮政释放性能首先出现在数据科学上。
来源:走向数据科学数据框的每一行是一个常见的操作。这些操作令人尴尬地平行:每行都可以独立处理。使用多核CPU,可以一次处理许多行。
直到最近,在Python中利用这一机会。全局解释器锁(GIL)列出了多线程功能应用程序,即CPU结合。
Python现在提供了一个解决方案:使用Python 3.13的“实验自由线程构建”,删除了GIL,并且可以使用CPU结合操作的真正多线程并发。
性能优势是非凡的。利用自由线程python,staticframe 3.2可以在数据框架上执行行列功能应用程序,至少是单线程执行的两倍。
staticframe例如,对于一百万个整数的平方数据框,我们可以使用lambda s:s.loc [s%2 == 0] .sum()计算所有偶数值的总和。当使用Python 3.13T(“ t”表示自由线程变体)时,持续时间(用ipython%TimeIt测量)下降了60%以上,从21.3 ms到7.89 ms:
lambda s:s.loc [s%2 == 0] .sum()
ipython
%timeit
#python 3.13.5实验自由线程构建(Main,6月11日,2025,15:36:57)[clang 16.0.0(Clang-1600.0.26.6)]在darwin >>> darwin >>> darwin >>> notpy in numpy上;导入static_frame作为sf >>> f = sf.frame(np.Arange(1_000_000).RESHAPE(1000,1000))>>> func = lambda s:s.loc [s%2 == 0] .sum().sum()>>%timeit f.iter_ser_series f.iter_series(Axis = 1).apply(axis).apply(exis).apply(exis)。 std。
staticframe中的行范围功能应用程序使用iter_series(axis = 1)接口,然后使用appla()(用于单线读取应用程序)或applion_pool()用于多线程(use_threads = true)或多processed(use_trece)或多processed(use_threads = false)。
iter_series(axis = 1)
应用()
apply_pool()
use_threads = true
use_threads = false