【问题标题】:Python: Caching a 251mb hash in memoryPython:在内存中缓存 251mb 哈希
【发布时间】:2017-07-29 12:54:06
【问题描述】:

我正在使用 django 构建一个 webapp,我处理大型 excel 文件(大约一百万行),我将其解析为哈希以加快计算和操作。我想缓存散列,但散列大小为 251mb,我认为 memcache 不允许您缓存如此大的变量。有人对我应该如何处理这个问题有任何建议吗?我也对缓存以外的方式持开放态度。

【问题讨论】:

  • 将 Excel 文件解析为哈希以加快计算和操作?你能多说一点吗?
  • @Elmex80s 我有一堆函数要在需要快速查找才能执行的数据上运行。我有 company_id 和 parent_id 列,我可能需要查找所有具有相同 parent_id 的 company_id 并查看所有公司中的某些列是否匹配等,我会在 excel 文件的每一行上运行这些函数。
  • 听起来很有趣,但为什么不用 xlrd 模块或 pandas 包将 Excel 文件加载到内存中呢? xlrd 模块将为您提供简单的列表,其中包含您可以自己重塑的值。 pandas 包将为您提供 DataFrames,这是一种非常强大的数据结构,可以处理像您这样的(非常大的)表。
  • 我不知道有什么神奇的 Python 模块可以为您完成所有工作。因此我认为你必须自己编程。因此,您必须将临时数据存储在硬盘驱动器或内存中,并在每次请求时检查数据是否已经存在。接下来,您必须处理临时数据的限制。我会说你最多存储 1000 个中间结果。关于哈希,如果您的 100 MB 文件为您提供 + 250 MB 文件哈希,那么您应该更改一些内容。
  • 为什么我的 hash 是 xlsx 文件大小的两倍我不知道,对不起。

标签: python django caching hash python-3.5


【解决方案1】:

如果您没有使用 memcached,Redis 的每个键的最大值大小为 2GB。只要您使用的是 Django 的内置缓存层,那么在设置 Redis 服务器并重新配置缓存设置后,它就是一个直接替代品。

另请参阅:https://github.com/niwinz/django-redis

【讨论】:

    猜你喜欢
    • 2016-09-18
    • 2011-11-10
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    相关资源
    最近更新 更多