2013-02-20 172 views
0

我正计划一个应用程序在python3中使用三个文本文件或三个数据库表,我不知道该使用什么。这些文件只包含字符串或单个列一个数据库表,每行都有一个字符串。

应用程序有三个方案program_A,PROGRAM_B,program_C其操作这三个文件,FILE_A和FILE_B和file_C.Program一个读/写FILE_A读FILE_C和写入FILE_B,PROGRAM_B读/写FILE_B,program_C写FILE_A和FILE_C。 file_A和file_B都是虚构的队列,所以程序从文件中读取一行,然后从文件中删除该行(因此我提到了读/写),并且写入文件的程序将一行写入文件。

我不知道如何让这些程序工作,因为这些程序正在同时访问这些文件。我查看了sqlite文件锁定状态,我不知道如何使用它来解决我的情况。我是也不知道我是否应该使用sqlite数据库或简单的文本文件。


我也在考虑使用某种共享内存或内存数据库,当应用程序启动时我可以加载这些文件的内容,并在应用程序退出时写回文件,但是担心如果某些软件硬件故障会这意味着我将失去在该应用程序运行中完成的工作,因为文件没有因失败而更新。同时读取和写入python文件

回答

1

读写同一个文件?不,这只会带来痛苦和困难。您可以尝试threading的或multiprocessing的共享数据机制,并有一个适合您的需求的queue实施。

SQLite的方法似乎也没关系,你可以添加必要的数据来设定这些“排队”等的顺序,但我没有通过数据库通信的进程风扇。

+0

谢谢,我想多处理的机制,可以适合我的需要,尤其是queue.now我经历的机制来实现共享内存,在多处理的documentation.I已经看到很多的答复,以阻止共享内存类似的问题,所以我将更多地研究这个话题。 – user2078134 2013-02-20 10:38:59

+0

如果我正确理解你的情况,你不需要共享内存机制,队列就足够了。但是,不要相信'qsize'和'empty'。在它明确接收到它等待的队列是空的确认后,总是停止一个进程(例如,将'None'放在队列中,并且当进程读取它时,它停止)。 – dmg 2013-02-20 10:57:42

+0

感谢关于队列中'无'的提示.Queues将满足file_A,file_B部分,但file_C部分不是队列。program_C确实写入文件的末尾,但program_A需要遍历所有字符串出现在这个文件中。 – user2078134 2013-02-20 12:46:57