当前位置: 首页 > 面试题库 >

如果我有足够的RAM,如何加快去掉大型物体的速度?

琴宾鸿
2023-03-14
问题内容

使用cPickle读取一个1 GB的NetworkX图形数据结构花了我一个小时的时间(将它作为二进制pickle文件存储在磁盘上时为1 GB)。

请注意,文件会快速加载到内存中。换句话说,如果我运行:

import cPickle as pickle

f = open("bigNetworkXGraph.pickle","rb")
binary_data = f.read() # This part doesn't take long
graph = pickle.loads(binary_data) # This takes ages

如何加快上一个操作的速度?

请注意,我已经尝试使用两种二进制协议(1和2)对数据进行腌制,并且似乎对使用哪种协议并没有太大的影响。还要注意,尽管我在上面使用“ loads”(意思是“
load string”)功能,但它正在加载二进制数据,而不是ascii-data。

我正在使用的系统上有128gb的RAM,所以我希望有人能告诉我如何增加在pickle实现中埋藏的读取缓冲区。


问题答案:

您可能受制于Python对象创建/分配的开销,而不是解包本身。如果是这样,除了不创建所有对象外,您几乎无能为力。您一次需要整个结构吗?如果不是,则可以使用数据结构的惰性填充(例如:通过腌制的字符串表示结构的各个部分,然后仅在访问它们时对其进行修补)。



 类似资料:
  • 我使用类a创建了一个简单的游戏,它扩展了SurfaceView并实现了Runnable。在游戏中,绘图是在公共空运行内完成的。activity一发射就会被线程锁定。游戏需要很多时间(有时10-15秒)来加载。以及当游戏暂停(thread.join())和恢复(thread=新线程(this);thread.start())时,都需要太多的时间。是什么原因导致游戏加载缓慢?解决办法是什么?

  • 问题内容: 我正在导入一个 长为1700万数字 的大型文本文件,并且正在使用以下代码: 它会立即加载文件并打印出来,但是要花费很长时间(大约一个小时)才能将转换为,我可以做些什么来加快速度并快速加载数字吗? 问题答案: 作为一种优化,因为是,你可以把它保存到一个 二进制文件 一次,并且加速您的装载增色不少。 加载序列化的对象应该比每次解析一个巨大的字符串都要 快 。 使用以节省你的大整数读回。

  • 我创建了一个名为的类,它的任务是快速生成随机数。它非常简单:只需取旧值,乘以一个,然后取小数部分。 以下是我的课程的全部内容: 下面是我为测试它而编写的代码: 这是一个非常简单的算法,只需将前一个两倍乘以一个“神奇的数字”两倍。我很快就把它组合在一起,所以我可能会做得更好,但奇怪的是,它似乎运行良好。 这是方法中注释掉的行的示例输出: 嗯,很随意。事实上,这对游戏中的随机数生成器是有效的。 下面是

  • 所以我在做一个程序,在这里你可以有两个对象(圆)。我希望它们像行星一样围绕彼此运行,但只能是二维的。 我知道用牛顿万有引力定律,我可以得到两个物体之间的力。我也知道A=F/m,我的问题是我如何从前面的方程中得到A并把它变成一个向量?

  • 本文向大家介绍如何去掉button的点击样式?相关面试题,主要包含被问及如何去掉button的点击样式?时的应答技巧和注意事项,需要的朋友参考一下 border:none; :active{ color:#000 } 按下去效果没找到

  • 问题内容: 我们开始在我们的项目中大量使用GWT,并且GWT编译器的性能变得越来越令人讨厌。 我们将开始改变工作方式以减轻该问题,包括更加强调托管模式浏览器,这推迟了以后运行GWT编译器的需求,但这带来了自身的风险,特别是在直到比我们想要的晚得多的时候,才能够真正使用浏览器解决问题。 理想情况下,我们希望使GWT编译器本身更快-一分钟的编译相当小的应用程序花费了很多精力。但是,如果使用的是相当幼稚