我正在编写一个名为“变量”的程序。每个变量将执行一些计算,并将结果存储在其自己的“缓存”中。当前,“缓存”是一个字典,例如,
{(1,2):results_for_parameter_(1,2),
(3,4):results_for_parameter_(3,4)...etc}
此缓存的唯一用途是读取和写入“缓存”的结果。缓存的读取和写入将非常频繁地执行。这本词典的大小将很大。它(缓存)可能有超过一百万个项目(我尚未确定模型的复杂性)。我正在考虑是否将该缓存的数据类型更改为pandas.dataframe。
我想问的是在这种情况下哪种数据类型更有效。更具体地说,哪种数据类型应该更快:
也欢迎使用一种数据类型而不是另一种数据类型的其他考虑。 谢谢您的回答! 编辑:您还可以推荐比我建议的更有效的缓存方式
答案 0 :(得分:0)
希望这能回答您的问题。但是,由于我使用“更快”这个词,所以它可能不是您想要的。我事先表示歉意。尽管如此,我会尽力而为。
简短答案: DataFrame。
长答案:字典和DataFrame适用于很多事情;相同或不同。我无法确切证明一个比另一个要快。但是,我相信我可以证明DataFrame是:
例如,要使与DataFrame相关的所有内容变得更快,您可以尝试加载Cython
扩展名并使用一些语法更改。您可以在熊猫文档https://pandas.pydata.org/pandas-docs/stable/user_guide/enhancingperf.html中阅读有关此内容的信息。
它还可以帮助确保您使用正确的功能来获得所需的内容。这样的示例包括iloc
,loc
,contains
,lookup
或isin
。
最后,如果您想查看一些更快的数据,则需要使用prun
一些功能,或在某些循环中使用timeit
。如果您的结果表明字典更快,我会购买该答案。但是,我也将持怀疑态度,因为使用正确的DataFrame方法,它可能真正很快。