2013-02-20 173 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