欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 建议把1分线、5秒线等数据分日或分月保存

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3790人关注过本帖树形打印复制链接

主题:建议把1分线、5秒线等数据分日或分月保存

帅哥哟,离线,有人找我吗?
netfox
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 搬砖的
等级:小飞侠 帖子:1670 积分:397 威望:0 精华:0 注册:2012/3/19 20:34:34
  发帖心情 Post By:2015/5/4 11:42:02 [显示全部帖子]

楼主这是算法问题。

  限定数据然后读取,看似资源节省了但实际操作容易导致数据读取不足,也就是没冗余会崩的。

 

一般写法确实一口气全读取,然后只显示部分。 你看 readline 函数是每次读取一行,一行一行读取,全部读到内存。  f.open 函数根本就不管你多大直接全读取了,唯一就是你可以设定缓存是多少。

   读取一半后在读取一半,效率其实不咋样的。

 

如果只是限定读取部分,然后在读取。 就意味open要开2次, 并且有个问题,前一次到底关闭还是打开?  每次open必须带一个close, 不能open,open,close模式。

 你这样就相当于一个文件放到2个缓存。 实际占用内存是一样,但在程序内分2部分,导致对变量操作要跳来跳去。

 

O__O  当然我只写过300M数据运算, 2G的。。。我还真没写过。


 回到顶部
帅哥哟,离线,有人找我吗?
netfox
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 搬砖的
等级:小飞侠 帖子:1670 积分:397 威望:0 精华:0 注册:2012/3/19 20:34:34
  发帖心情 Post By:2015/5/4 14:19:09 [显示全部帖子]

以下是引用yanxc在2015/5/4 13:32:59的发言:


怎么可能效率不咋样。

我是复盘几年前的一天两天,结果金字塔把几年的数据都调出来。
显然占用不在一个档次上。

 

呀怎么说呢二次开发与前置开发时候是不同的,以前只写VBA,现在写python后才体会的。

  调用数据其实不是“调用” 有个数据300M,你只要其中连续部分的150M (要是分块就麻烦)。

方法1, 一次读取内存后,在对读取变量分析挑出你要的

方法2,依据行读取文件,移动到指定也就是开始段A开始读入到内存存储。 但是前面你读取那些也是调入到内存无非就是后来数据把它废弃了。

 

   从效率来说只要内存足够大,方法1比方法2更好。 因为默认你可能要是整个数据,然后对整个数据排列,没说下次不用啊,下次要用只要没close到文件变量就在内存。

 

方法2的问题是你一旦超标了,就是说我要一部分新数据延续下去,则立即就又要重新打开文件在读取一次。 不是从上次哪里读取下去,是重新读取。

  虽然方法2可以利用指针记忆上次读取位置,但是下次数据申请未必就是这次数据刚好的后续,因此一般避免错误都是重新读取了。

 

当然我也希望只要给定数据段,毕竟我也要用金字塔定位时间段研究的。 但是就我目前编程知识我知道是一次读取后最有效率。

  内存操作比对磁盘I/O效率高不是一点。

[此贴子已经被作者于2015/5/4 14:20:10编辑过]

 回到顶部