【问题标题】:How to cache pickle load to avoid re loading every run?如何缓存泡菜负载以避免重新加载每次运行?
【发布时间】:2021-02-12 08:59:29
【问题描述】:

我有一个非常大的 pickle 文件,我正在对它进行一些分析。

加载它最多需要一分钟,我每天要加载数百次。

有没有办法将文件内容保存在内存中并避免重新加载?

限制:

  • 我不想使用笔记本
  • 我希望能够更改我的主脚本,而不是在控制台中运行
  • 我正在使用 Pycharm

谢谢

【问题讨论】:

  • 你可以pickle到一个ramdisk
  • 您找到解决方案了吗?我也想知道
  • @JulesG.M.我唯一能想到的是一个在后台运行并通过 API 提供文件块的服务。

标签: python caching pickle


【解决方案1】:

你能不将未腌制的对象目录保留在内存中并重新使用它吗?

import pickle

_CACHED_OBJ = None

def load_object(pickled_value):
    global _CACHED_OBJ
    _CACHED_OBJ = pickle.loads(pickled_value)


def run_your_code():
    # You can use _CACHED_OBJ which is already loaded
    pass


def init():
    load_object(pickled_value)

P.S:我不确定您的代码是如何运行的。如果您正在运行脚本,当然运行时将是短暂的,这将不起作用。如果您正在运行 Web 服务器或类似长时间运行的进程,并且需要多次访问 pickle,这将是一个潜在的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    相关资源
    最近更新 更多