以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2) ---- 建议把1分线、5秒线等数据分日或分月保存 (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=78215) |
-- 作者:yanxc -- 发布时间:2015/5/4 10:47:43 -- 建议把1分线、5秒线等数据分日或分月保存 由于需要长期数据作研究,目前1分线、5秒线都达到近2G,调出非常慢。 建议学分笔数据,拆分到日,或者拆分到月也行。 这样,在调出历史数据段的时候,比如2010-2011,也就不需要再白白调出2011-2015的数据占用资源和时间了。
|
-- 作者:pyd -- 发布时间:2015/5/4 11:06:31 -- 你是在图上调出2010-2011的数据?可以手工直接下载2010-2011的数据,k线图上直接锁定你要看的2010-2011,不用调出中间的数据 |
-- 作者:FexTel -- 发布时间:2015/5/4 11:09:29 -- 1,改变存储方式后,历史数据格式全部都要进行调整!会影响大批量用户 2,目前方式只会影响盘后分析处理情况,暂不会进行处理 |
-- 作者:yanxc -- 发布时间:2015/5/4 11:29:42 -- 以下是引用pyd在2015/5/4 11:06:31的发言: 你是在图上调出2010-2011的数据?可以手工直接下载2010-2011的数据,k线图上直接锁定你要看的2010-2011,不用调出中间的数据 但其实金字塔还是把所有数据全部调出,然后再只显示了2010-2011。所以资源和时间还是浪费了。
|
-- 作者:yanxc -- 发布时间:2015/5/4 11:31:01 -- 以下是引用FexTel在2015/5/4 11:09:29的发言:
即使不修改。 1,改变存储方式后,历史数据格式全部都要进行调整!会影响大批量用户 2,目前方式只会影响盘后分析处理情况,暂不会进行处理 如果我锁定2010-2011,金字塔是否会调出2012之后的扩展数据呢? 建议至少扩展数据按锁定来调,而不是全调。
[此贴子已经被作者于2015/5/4 11:31:10编辑过]
|
-- 作者:netfox -- 发布时间:2015/5/4 11:42:02 -- 楼主这是算法问题。 限定数据然后读取,看似资源节省了但实际操作容易导致数据读取不足,也就是没冗余会崩的。
一般写法确实一口气全读取,然后只显示部分。 你看 readline 函数是每次读取一行,一行一行读取,全部读到内存。 f.open 函数根本就不管你多大直接全读取了,唯一就是你可以设定缓存是多少。 读取一半后在读取一半,效率其实不咋样的。
如果只是限定读取部分,然后在读取。 就意味open要开2次, 并且有个问题,前一次到底关闭还是打开? 每次open必须带一个close, 不能open,open,close模式。 你这样就相当于一个文件放到2个缓存。 实际占用内存是一样,但在程序内分2部分,导致对变量操作要跳来跳去。
O__O 当然我只写过300M数据运算, 2G的。。。我还真没写过。 |
-- 作者:yanxc -- 发布时间:2015/5/4 13:32:59 -- 以下是引用netfox在2015/5/4 11:42:02的发言: 楼主这是算法问题。 限定数据然后读取,看似资源节省了但实际操作容易导致数据读取不足,也就是没冗余会崩的。
一般写法确实一口气全读取,然后只显示部分。 你看 readline 函数是每次读取一行,一行一行读取,全部读到内存。 f.open 函数根本就不管你多大直接全读取了,唯一就是你可以设定缓存是多少。 读取一半后在读取一半,效率其实不咋样的。
如果只是限定读取部分,然后在读取。 就意味open要开2次, 并且有个问题,前一次到底关闭还是打开? 每次open必须带一个close, 不能open,open,close模式。 你这样就相当于一个文件放到2个缓存。 实际占用内存是一样,但在程序内分2部分,导致对变量操作要跳来跳去。
O__O 当然我只写过300M数据运算, 2G的。。。我还真没写过。 我是复盘几年前的一天两天,结果金字塔把几年的数据都调出来。 显然占用不在一个档次上。
|
-- 作者:netfox -- 发布时间: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编辑过]
|