我试图将从数据采集系统收集的数据写入内存中的位置,然后异步地对数据执行进一步的处理,或者将其写入文件进行离线处理。我试图以这种方式实现这种架构,将数据采集与数据分析和传输隔离开来,为我们未来的扩展和改进提供了一些灵活性,但这肯定比简单地将数据直接写入文件更复杂。
以下是我写的一些探索性代码。
#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.BufferdRWPair是处理这些数据的最佳方式吗?我试过StringIO,因为我使用的是Python 2.7.2,但没有成功。我喜欢带时间戳键的记录的想法,因此我选择了dict结构,但我肯定会考虑其他选择。还有其他io类我应该看看吗?
-
我看到的一个替代方案是在NumPy/SciPy/Pandas世界中定义的DataFrame构造。它看起来很有趣,但似乎需要很多额外的模块,所以我对此避而不谈。我对这些模块都没有经验——我应该看看这些更复杂的模块来获得我需要的东西吗?
我欢迎任何建议或反馈,各位。。。谢谢你检查这个问题!