gpt4 book ai didi

Python:预加载内存

转载 作者:行者123 更新时间:2023-12-04 11:05:56 25 4
gpt4 key购买 nike

我有一个 python 程序,我需要在其中加载和反序列化 1GB 的 pickle 文件。这需要 20 秒,我想要一种机制,可以随时使用泡菜的内容。我看过 shared_memory但它使用的所有示例似乎都涉及 numpy,而我的项目不使用 numpy。使用 shared_memory 实现这一目标的最简单、最干净的方法是什么?否则?
这就是我现在加载数据的方式(每次运行):

def load_pickle(pickle_name):
return pickle.load(open(DATA_ROOT + pickle_name, 'rb'))
我希望能够在两次运行之间编辑模拟代码而无需重新加载泡菜。我一直在胡闹 importlib.reload但对于包含许多文件的大型 Python 程序来说,它似乎真的不太适用:
def main():
data_manager.load_data()
run_simulation()
while True:
try:
importlib.reload(simulation)
run_simulation()
except:
print(traceback.format_exc())
print('Press enter to re-run main.py, CTRL-C to exit')
sys.stdin.readline()

最佳答案

这可能是 XY problem ,其来源是假设您必须完全使用泡菜;由于它们管理依赖项的方式,它们处理起来很糟糕,并且从根本上说它们对于任何长期数据存储来说都是一个糟糕的选择,因为它
源财务数据几乎可以肯定以某种表格形式开始,因此可以以更友好的格式请求它
一个 simple middleware同时反序列化和重新序列化泡菜将平滑过渡

input -> load pickle -> write -> output

将您的工作流程转换为使用设计为 efficient to read and write 的 Parquet 或 Feather几乎肯定会对您的加载速度产生相当大的影响
更多相关链接
  • Answer to How to reversibly store and load a Pandas dataframe to/from disk
  • What are the pros and cons of parquet format compared to other formats?

  • 您也可以使用 hickle 来实现这一点。 ,它将在内部使用 HDH5 格式,理想情况下使其比 pickle 快得多,同时仍然表现得像一个

    关于Python:预加载内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67888952/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com