首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GridEngine上快速读写大型python recarray的内存处理

在GridEngine上快速读写大型python recarray的内存处理
EN

Stack Overflow用户
提问于 2014-02-06 04:46:01
回答 1查看 93关注 0票数 1

有没有办法强制python2.7对象保存在RAM中,以便进行快速读写访问?或者,如果这是一个与操作系统相关的问题,有没有办法让网格引擎也这样做呢?

我有一个由19个字段和5000万行组成的大型全局recarray (myrecarray)。我使用一个定义(myloop)来遍历myrecarray,访问每一行一次,以更新两个字段的值,并将一些数据复制到其他对象。这是通过qsub在具有256 it的集群上运行的(大约是myrecarray大小的10倍,因此它可以处理myrecarray的大小)。这里的问题是,当在集群上运行时,循环是一个巨大的瓶颈。当使用timeit在macbook pro (4 4GB内存,2.53 GHz处理器)上使用相同的500,000行recarray测试循环时,循环需要250^-6秒,并且比集群上快5倍。

似乎最有可能的情况是,集群没有将myrecarray保存在RAM中,而是强制循环每次从磁盘中读取myrecarray,从而导致速度减慢。

我已经研究了网格引擎上的内存共享,python中的多处理和堆分配,并且有点迷茫,特别是在我不确定到底发生了什么的情况下。任何建议都将受到热烈欢迎。

recarray的一个示例行是...

代码语言:javascript
复制
(49817038, 'C', 'R', 'O', 'U', 'E', 1, 1, 0, 0, 1, 2, 3, 3, 6, 2, 0, 'Tup', 'Hit')

注意:我是唯一一个使用此群集的人,因此不会与其他作业冲突,这是一个单线程进程,并且管理员对RAM使用没有任何限制。

非常感谢你提前

EN

回答 1

Stack Overflow用户

发布于 2014-02-06 23:12:57

我认为这是一个操作系统设置。看看如何配置您的交换因子。如果您希望将所有内容保留在RAM中,除非它已满,请将其设置为0。

http://en.wikipedia.org/wiki/Swappiness

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21588133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档