我试图将从数据采集系统收集的数据写入内存中的位置,然后异步地对数据执行进一步的处理,或者将其写入文件进行脱机处理。我试图用这种方式来实现这种架构,将数据采集与数据分析和传输隔离开来,为我们将来的扩展和改进提供了一些灵活性,但这绝对比直接将数据写入文件要复杂得多。在
下面是我写的一些探索性代码。在
#io.BufferedRWPair test
from io import BufferedRWPair
# Samples of instrumentation data to be stored in RAM
test0 = {'Wed Aug 1 16:48:51 2012': ['20.0000', '0.0000', '13.5', '75.62', '8190',
'1640', '240', '-13', '79.40']}
test1 = {'Wed Aug 1 17:06:48 2012': ['20.0000', '0.0000', '13.5', '75.62', '8190',
'1640', '240', '-13', '79.40']}
# Attempt to create a RAM-resident object into which to read the data.
data = BufferedRWPair(' ', ' ', buffer_size=1024)
data.write(test0)
data.write(test1)
print data.getvalue()
data.close()
这里有几个问题(可能更多!)公司名称:
->;“data”是一个变量名,它提取了我正试图组装的一个构造(Python之外的结构),它是一个类似数组的结构,应该保存顺序记录,每个记录都包含多个过程数据度量,前面有一个时间戳,可以用作检索的键。我将此作为我设计意图的背景,以防代码过于模糊而无法反映我的真实问题。在
->此代码不起作用,因为未创建“data”对象。我只是试图打开一个空缓冲区,稍后再填充,但是Python正在寻找两个对象,一个可读,一个可写,它们在我的代码中不存在。因此,我甚至不确定我是否使用了正确的结构,这导致了以下问题:
是io.BufferedRWPair接口处理这些数据的最佳方法是什么?自从使用了python2.7.2之后,我就尝试过StringIO,但是没有运气。我喜欢一个带有时间戳键的记录的想法,因此我选择了dict结构,但我肯定会考虑其他方法。还有其他io类我应该看看吗?
我看到的另一种选择是在NumPy/SciPy/Pandas世界中定义的DataFrame构造。它看起来很有趣,但似乎需要很多额外的模块,所以我回避了。我对这些模块都没有经验——我应该看看这些更复杂的模块来获得我需要的东西吗?
我欢迎任何建议或反馈,伙计们。。。谢谢你回答这个问题!在
编写一种机制来在内存中保存数据,并且只在必要时将其写入文件,这是多余的—操作系统无论如何都会为您完成这项工作。如果您使用普通文件并从应用程序的不同部分访问它,只要有足够的内存可用,操作系统就会将文件内容保存在磁盘缓存中。在
如果想通过内存地址访问文件,可以使用^{} 模块对其进行内存映射。但是,我的印象是,您所需要的只是一个标准数据库,或者Python标准库提供的一个更简单的替代方案,例如^{} any^{} 模块。在
根据您的注释,还可以查看像^{} 和^{} 这样的键值存储。在
如果我理解您的要求,那么使用内存中的sqlite数据库可能是一种方法。Sqlite允许您在内存中完整地创建一个功能完整的SQL数据库。而不是读和写,你将做选择和插入。在
相关问题 更多 >
编程相关推荐