如何在GUI应用程序中正确使用多个Python进程访问底层数据存储?

2024-05-14 05:40:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个严格意义上的python脚本作家,只做过一次性脚本。主要用于字符串操作等。但是,我认为自己足够熟练,能够处理(通过大量搜索)我想做的大部分实现细节(其中大部分已经在各种脚本中完成)。你知道吗

我当前的项目将涉及一个显示数据的UI(假设在PyQT中,我还没有决定,但可能不会使用tkinter)。我还没有做UI,因为我的脚本到目前为止都是命令行的。你知道吗

我想有一个单独的过程来处理上述数据的更新。数据存储将是一堆XML文件(不幸的是,这是项目[1]的要求)。由于潜在可用的XML文件数量是无限的,我认为单独的进程可以防止UI被锁定。在我的选择语言(C++与QT)中,我只使用线程,但是阅读吉尔的文章,我应该使用过程。你知道吗

我目前的想法是一个进程,它读取XML文件,并为我的UI进程以某种方便的格式对它们进行编码。这个过程可能还会监视数据存储区中任何可能的文件添加/删除/修改。最后,在编码过程中,我可能还想维护一个搜索词索引,以提高响应能力。我预计在这个过程中会有相当大的计算量,这就是为什么我打算把它分开。对我当前的数据存储进行一次完整的扫描(还没有完成我想要的所有处理)需要大约半秒钟的时间,我计划增加它。你知道吗

UI进程接受用户输入(例如,搜索词)并显示必要的结果。也会有少量的处理,但没有任何税收。用户也可以选择保存她当前查看的记录,但我还不确定实际的文件更改应该由UI进程完成还是应该交给后台进程。你知道吗

在c中结论:你知道吗

  1. 在我的进程之间共享一个大型ish python对象的最佳方式是什么?它是队列、管道、对单独的数据库对象的写入/读取,还是其他什么?

  2. 我的操作假设UI进程需要整个数据存储。实际上,它可能只需要一个摘要(想想UI进程和数据存储进程之间的客户机-服务器体系结构),但这当然会涉及更多开销的编码/维护。对于总是只在一个设备上运行的应用程序来说,这算是一种好的做法吗?

额外的形成:- [1] -对XML文件的要求是,通过dropbox等文件同步服务,以合理的原子方式在设备之间轻松共享XML文件。由于这个项目需要基于记录的同步,包括允许在不同的机器上同时进行编辑(可以进行后期合并),我宁愿让第三方文件同步服务来处理它,也不愿编写自己的bug同步工具。而且,最关键的是,已经有此数据存储的用户以当前的XML形式使用它,因此更改它将非常困难。你知道吗


Tags: 文件数据项目对象用户脚本ui编码