我有一个类可以解析两个大的(~90K行,第一行中有11列,第二行中约为20列,第二行中有5列)CSV文件。根据规范,我可以在外部更改CSV文件(删除/添加新行;列保持不变以及路径)。此类更新可以随时发生(尽管更新不太可能以短于几分钟的时间间隔启动)并且更新任何两个文件都必须终止所有数据的当前处理(CSV,XML)从HTTP GET请求,UDP电报),然后重新解析两者中的每一个的内容(或者只有一个,如果只有一个已经改变)。
我保留了内存中的CSV数据(因为我应用了多个过滤器来删除不需要的条目),以便加快使用它,并避免不必要的IO操作(打开,读取,关闭文件)。
现在我正在调查QFileSystemWatcher,这似乎正是我所需要的。但是,我无法找到有关内部实际工作情况的任何信息。
由于我只需要监控2个文件的更改,因此文件数量不应成为问题。我是否需要在一个单独的线程中运行它(因为观察者是发生CSV解析的同一个类的一部分),或者可以安全地说它可以在没有太多麻烦的情况下运行(即它像{{一样异步工作) 1}})?我的开发环境现在是一个相对强大的主机(HP Z240工作站)上的64位Ubuntu VM(VirtualBox),但目标系统是嵌入式系统。虽然整个解析CSV文件的时间最多只需2-3秒,但我不知道应用程序部署后会产生多大的性能影响,因此额外的开销是我的一个问题。