python class namedtuple 效率_python中namedtuple对比数据类哪个运行速度更快

python中namedtuple对比数据类哪个运行速度更快

发布时间:2020-12-09 09:36:06

来源:亿速云

阅读:83

作者:小新

小编给大家分享一下python中namedtuple对比数据类哪个运行速度更快,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

Dataclasses的用法。

Python3.7 提供了一个装饰器dataclass,用以把一个类转化为dataclass。

你需要做的就是把类包裹进装饰器里:from dataclasses import dataclass

@dataclass

class A:

...

namedtuple和数据类在性能上也有所不同。数据类基于纯Python实现dict。这使得它们在访问字段时更快。另一方面,namedtuples只是常规的扩展tuple。这意味着它们的实现基于更快的C代码并具有较小的内存占用量。

为了证明这一点,请考虑在Python 3.8.5上进行此实验。In [6]: import sys

In [7]: ColorTuple = namedtuple("Color", "r g b alpha")

In [8]: @dataclass

...: class ColorClass:

...:     """A regular class that represents a color."""

...:     r: float

...:     g: float

...:     b: float

...:     alpha: float

...:

In [9]: color_tup = ColorTuple(r=50, g=205, b=50, alpha=1.0)

In [10]: color_cls = ColorClass(r=50, g=205, b=50, alpha=1.0)

In [11]: %timeit color_tup.r

36.8 ns ± 0.109 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [12]: %timeit color_cls.r

38.4 ns ± 0.112 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [15]: sys.getsizeof(color_tup)

Out[15]: 72

In [16]: sys.getsizeof(color_cls) + sys.getsizeof(vars(color_cls))

Out[16]: 152

如上,数据类在中访问字段的速度稍快一些,但是它们比nametuple占用更多的内存空间。

看完了这篇文章,相信你对python中namedtuple对比数据类哪个运行速度更快有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值