Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在实时pytables上写和读_Python_Real Time_Pytables - Fatal编程技术网

Python 在实时pytables上写和读

Python 在实时pytables上写和读,python,real-time,pytables,Python,Real Time,Pytables,我不确定我的想法是否可行,我需要有HDF5/PyTables工作经验的人的帮助 escenario将是这样的: 假设我们有一个进程,或一台机器或一个连接等等,获取数据,并以HDF5/PyTable格式存储。我称之为商店软件 有没有可能有另一个软件,我称之为分析软件,按时运行 如果有帮助,商店软件和分析软件将完全独立,甚至可以用不同的语言编写 我的疑问是,如果存储程序正在编写PyTable,mode='w',那么,同时,分析程序能否访问mode='r',并读取一些数据以执行一些基本分析、平均值等

我不确定我的想法是否可行,我需要有HDF5/PyTables工作经验的人的帮助

escenario将是这样的:

假设我们有一个进程,或一台机器或一个连接等等,获取数据,并以HDF5/PyTable格式存储。我称之为商店软件

有没有可能有另一个软件,我称之为分析软件,按时运行

如果有帮助,商店软件和分析软件将完全独立,甚至可以用不同的语言编写

我的疑问是,如果存储程序正在编写PyTable,
mode='w'
,那么,同时,分析程序能否访问
mode='r'
,并读取一些数据以执行一些基本分析、平均值等

其基本思想是能够实时分析存储在PyTable中的数据


当然,任何其他建议的解决方案都将不胜感激。

这绝对是可能的。如果在“w”模式下只有一个进程,而在“r”模式下有多个进程,那么这就特别容易了。只需确保在“w”过程中偶尔刷新文件和/或数据集即可。如果您这样做,“r”进程将能够看到数据。

不建议也不支持在一个进程中写入而在其他进程中读取。请从以下方面看这个问题:

HDF5是否支持从多个进程并发访问单个数据集

如果所有进程都在读取,那么,是的,HDF5(串行)支持此功能。如果有任何正在写入的进程,则不支持。我们正在开发“单写多读”(SWMR)功能,该功能将在未来版本中提供(预计将在HDF5-1.10中提供)


Pytables不能保证@smcatepillar所述的这种写/读模式。

你确定这是个好主意吗?引用PyTables常见问题:“PyTables可以用于并发访问场景吗?并发读取根本没有问题。但是,每当进程(或线程)运行时正在尝试写入,然后问题将开始出现。首先,PyTables不支持任何级别的锁定,因此多个进程同时写入同一PyTables文件可能会导致文件损坏,所以不要这样做!即使只有一个进程写入而其他进程读取也是一件棘手的事情,因为读取进程可能会被读取从并发数据写入操作中删除不完整的数据。”我记得,写入操作在HDF5中被锁定,这就是为什么这是正常的。