我严格来说是一个python脚本编写器,只做过一次性脚本。主要用于字符串操作等。但是,我认为自己足够熟练,能够处理(大量搜索)我想要做的大部分实现细节(大部分已经在各种脚本中完成)。
我当前的项目将涉及一个用户界面(让我们在PyQT中假设,我还没有决定,但可能不会使用tkinter)显示数据。我还没有完成UI,因为我的脚本到目前为止都是命令行。
我希望有一个单独的过程来处理所述数据的更新。数据存储将是一堆XML文件(遗憾的是,这是项目的要求[1])。由于可能有无限数量的XML文件,我认为一个单独的进程会阻止我的UI被锁定。用我选择的语言(带有QT的C ++)我只是使用线程,但是阅读GIL似乎应该使用进程。
我目前的想法是一个进程读取XML文件,并可能以一些方便的格式为我的UI进程编码。此过程可能还会监视数据存储以查找任何可能的文件添加/删除/修改。最后,在编码过程中,我可能还希望维护搜索项的索引以提高响应速度。我期望在这个过程中计算量相当大,这就是为什么我打算把它拆分掉。对我当前数据存储的完整扫描(尚未进行我想要的所有处理)大约需要半秒钟,我计划增长它。
UI流程接受用户输入(例如,搜索词)并显示必要的结果。还会有一些处理,但没有任何税收。用户也可以选择保存她当前正在查看的记录,但是我还没有确定是否应该通过UI过程完成实际的文件更改,或者应该将其移交给后台进程。
总之: -
分享我认为在我的进程之间的大型python对象的最佳方式是什么?它是队列,管道,写入/读取到单独的数据库对象还是其他什么?
我假设UI进程需要整个数据存储,我的操作。在实践中,它可能只需要一个摘要(想想UI过程和数据存储过程之间的客户端 - 服务器架构),但这当然会涉及更多的开销编码/维护。对于一直只能在一台设备上运行的应用程序,这被认为是一种很好的做法吗?
其他资料: - [1] - 对XML文件的要求是因为它们可以通过文件同步服务(例如Dropbox等)以合理的原子方式在设备之间轻松共享。由于这个项目需要基于记录的同步,包括允许在不同的机器上同时进行编辑(后合并),我宁愿让第三方文件同步服务处理它,而不是编写我自己的错误同步工具。此外,最重要的是,此数据存储的用户已经以其当前的XML格式使用它,因此更改它将非常困难。