当前位置: 首页 > 知识库问答 >
问题:

Python:预加载内存

羊浩广
2023-03-14

我有一个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()

共有1个答案

凌经赋
2023-03-14

这可能是一个XY问题,其来源是假设你必须使用泡菜;由于它们管理依赖关系的方式,它们很难处理,因此对于任何长期数据存储来说,它们基本上都是一个糟糕的选择

原始财务数据几乎肯定是以某种表格形式开始的,因此可以以更友好的格式请求它

同时使用一个简单的中间件来反序列化和保留序列化pickles将平滑过渡

intput -> load pickle -> write -> output

将您的工作流转换为使用Parquet或Feather(它们被设计为能够高效地读写),几乎肯定会对您的加载速度产生相当大的影响

进一步相关链接

  • https://stackoverflow.com/A/33570065/4541045)
  • 拼花版式与其他版式相比有什么利弊?

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

 类似资料:
  • 所谓的预加载技术就是在用户尚未触发页面跳转时,提前创建目标页面,这样当用户跳转时,就可以立即进行页面切换,节省创建新页面的时间,提升app使用体验。mui提供两种方式实现页面预加载。 方式一:通过mui.init方法中的preloadPages参数进行配置. mui.init({ preloadPages:[ { url:prelaod-page-url,

  • 通过 runApp 方法运行的 Web 应用,可通过 rax-pwa 提供的 preload 和 prerender 方法优化用户体验。 $npm i rax-pwa --save 预加载 预加载资源可以帮助页面更快速的渲染。 可通过 preload 来进行预加载。仅对 Web App 有效。 import { createElement } from 'rax'; import { preloa

  • 如果你有内容需要长时间加载,你应该给用户一个加载返回,因此,我们提供数字进度与没有数字进度的进度条。 线性 这里有一组不同类型的线性进度条。 确定进度 <div class="progress"> <div class="determinate" style="width: 70%"></div> </div> 不确定进度 <div class="progress"> <div class="in

  • 描述 (Description) Framework7中的预加载器由可缩放矢量图形(SVG)制成,并使用CSS动画,这使其易于调整大小。 预加载器有两种颜色 - 默认为浅色背景 另一个是黑暗的背景 您可以在HTML中使用preloader类,如下所示 - 例子 (Example) 以下示例演示了Framework7中预加载器的使用 - <!DOCTYPE html> <html> <head

  • ⚠️ 只有生产环境才有此功能 ⚠️ Examples Prefetching Next.js 有允许你预加载页面的 API。 用 Next.js 服务端渲染你的页面,可以达到所有你应用里所有未来会跳转的路径即时响应,有效的应用 Next.js,可以通过预加载应用程序的功能,最大程度的初始化网站性能。查看更多. Next.js 的预加载功能只预加载 JS 代码。当页面渲染时,你可能需要等待数据请求。

  • 本文向大家介绍浅析js预加载/延迟加载,包括了浅析js预加载/延迟加载的使用技巧和注意事项,需要的朋友参考一下 Pre loader 预加载一般有两种常用方式:xhr和动态插入节点的方式。动态插入节点是最为简单也最为广泛的一种异步加载方式,然后使用动态插入节点方法加载的文件都会 在加载后立即执行,javascript的执行一方面会占用浏览器js执行进程,另一方面也可能改变页面结构,而css 的执行