我已經在Python中創建了一個遺傳編程系統,但是遇到了與內存限制有關的問題。問題在於將所有人存儲在我的人羣中。目前,我將所有人存儲在內存中,然後再生成下一代的人口,然後將其存儲到內存中。這意味着我有兩個人羣值得記憶加載。經過一些測試後,我發現我相當快地超過了Windows的默認2GB應用程序內存大小。將對象存儲在文件而不是內存中
目前,我寫出了整個人口的單個樹木到一個文件,然後我可以加載和重新創建人口,如果我想。我一直在考慮的不是讓所有人都加載到內存中,而是通過從文件中拉出個人並僅實例化該單個人來訪問個人信息。根據我對Python的readline功能的理解,它應該一次只加載一行文件,而不是整個文件。如果我這樣做了,我想我只能記憶我當前操縱的個人。
我的問題是,有沒有一個突出的問題,這樣做,我現在沒有看到?我明白,因爲我正在處理磁盤而不是內存中的數據,所以我的性能會受到影響,但是對於這種情況,內存比速度更重要。另外我不想增加分配給Python程序的2GB內存。
謝謝!
你有沒有考慮使用數據庫的原因? –
從文件中提取單個記錄意味着通過文件讀取,直到找到正確的記錄。我強烈建議移動到具有現代64位環境和合理數量的RAM的計算機。如果您想優化程序,請提供[MCVE](http://stackoverflow.com/help/mcve)。如果它目前有效,請考慮詢問代碼審覈。 – TigerhawkT3
@ IgnacioVazquez-Abrams我曾考慮過,但在每代人中至少有95%的人口被替換。它似乎並不像使用數據庫是正確的方向,因爲數據記錄只能持續很短的時間。 – Tory