我正在尝试将从数据采集系统收集的数据写入内存中的位置,然后对数据进行异步进一步处理,或者将其写入文件以进行离线处理。我正在尝试以这种方式实现这种架构,以将数据采集与数据分析和传输隔离开来,为我们未来的扩展和改进提供了一些灵活性,但它肯定比简单地将数据直接写入文件更复杂。
这是我写的一些探索性代码。
#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 之外)——这是一个类似数组的结构,应该保存顺序记录,每条记录包含多个过程数据测量值,前言通过可以作为检索键的时间戳。我将此作为我的设计意图的背景,以防代码太模糊而无法反映我的真实问题。
-> 此代码不起作用,因为未创建“数据”对象。我只是想打开一个空缓冲区,稍后再填充,但 Python 正在寻找两个对象,一个可读,一个可写,它们在我的代码中不存在。因此,我不确定我是否使用了正确的构造,这会导致以下问题:
io.BufferedRWPair 是处理这些数据的最佳方式吗?我已经尝试过 StringIO,因为我使用的是 Python 2.7.2,但没有运气。我喜欢带有时间戳键的记录的想法,因此我选择了 dict 结构,但我肯定会考虑替代方案。我应该看其他 io 类吗?
我看过的另一种选择是在 NumPy/SciPy/Pandas 世界中定义的 DataFrame 构造。它看起来很有趣,但似乎需要很多额外的模块,所以我回避了。我对这些模块中的任何一个都没有经验——我应该查看这些更复杂的模块来获得我需要的东西吗?
我欢迎任何建议或反馈,伙计们......感谢您查看这个问题!