Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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中使用QTimer对大数据文件进行流式处理_Python_Qt_User Interface_Stream_Pyqt - Fatal编程技术网

在Python中使用QTimer对大数据文件进行流式处理

在Python中使用QTimer对大数据文件进行流式处理,python,qt,user-interface,stream,pyqt,Python,Qt,User Interface,Stream,Pyqt,我将首先说我有工作代码……但这并不是理想的代码,这就是为什么我希望社区运行我的方法。我试着用“QT方式”来做这件事,这迫使我走上我通常不走的路 我有一些包含原始时变数据的大型400+mb二进制文件。我需要将这些数据打印给用户,以便数据回放与录制的持续时间相匹配。我有一种工作方法,使用QTimer.timeout触发文件读取。我读取x个字节,当读取完成时,我会发出一个信号来触发绘图操作。通过调整超时持续时间,我可以在不阻塞界面的情况下控制打印速率(不阻塞GUI是关键)。这似乎是可行的,但对于像fi

我将首先说我有工作代码……但这并不是理想的代码,这就是为什么我希望社区运行我的方法。我试着用“QT方式”来做这件事,这迫使我走上我通常不走的路

我有一些包含原始时变数据的大型400+mb二进制文件。我需要将这些数据打印给用户,以便数据回放与录制的持续时间相匹配。我有一种工作方法,使用QTimer.timeout触发文件读取。我读取x个字节,当读取完成时,我会发出一个信号来触发绘图操作。通过调整超时持续时间,我可以在不阻塞界面的情况下控制打印速率(不阻塞GUI是关键)。这似乎是可行的,但对于像file.read这样简单的东西来说,感觉太复杂了

当我通过TCP接收数据流时,我可以使用socket.readreadready信号告诉我何时处理数据。由于数据是按时间顺序到达的,因此它自然会在TCP流上显示


通过使用fread并发出信号,我基本上复制了套接字的readReady。这听起来是一种合理的方法吗?

另一种方法可能是打印缓冲区比需要显示的要大一些。如果它的值不足,则填充它。如果在线程中执行此操作,则可以确保数据可用性,而无需定时器或读取就绪信号。您只需跟踪已读取的数据以及时间方向。

另一种方法是使用QFile::map()函数将要显示的正确数据片段映射到内存中,以便在不读取任何文件的情况下直接访问。我想这应该足够快,可以根据切片大小进行快速显示。此方法可以与上面的缓冲区方法相结合,以避免过度映射。这意味着要绘制一个当前需要的更大的切片。

好主意,我将对此进行研究。