我已经在Python中创建了一个遗传编程系统,但是遇到了与内存限制有关的问题。问题在于将所有人存储在我的人群中。目前,我将所有人存储在内存中,然后再生成下一代的人口,然后将其存储到内存中。这意味着我有两个人群值得记忆加载。经过一些测试后,我发现我相当快地超过了Windows的默认2GB应用程序内存大小。将对象存储在文件而不是内存中
目前,我写出了整个人口的单个树木到一个文件,然后我可以加载和重新创建人口,如果我想。我一直在考虑的不是让所有人都加载到内存中,而是通过从文件中拉出个人并仅实例化该单个人来访问个人信息。根据我对Python的readline功能的理解,它应该一次只加载一行文件,而不是整个文件。如果我这样做了,我想我只能记忆我当前操纵的个人。
我的问题是,有没有一个突出的问题,这样做,我现在没有看到?我明白,因为我正在处理磁盘而不是内存中的数据,所以我的性能会受到影响,但是对于这种情况,内存比速度更重要。另外我不想增加分配给Python程序的2GB内存。
谢谢!
你有没有考虑使用数据库的原因? –
从文件中提取单个记录意味着通过文件读取,直到找到正确的记录。我强烈建议移动到具有现代64位环境和合理数量的RAM的计算机。如果您想优化程序,请提供[MCVE](http://stackoverflow.com/help/mcve)。如果它目前有效,请考虑询问代码审核。 – TigerhawkT3
@ IgnacioVazquez-Abrams我曾考虑过,但在每代人中至少有95%的人口被替换。它似乎并不像使用数据库是正确的方向,因为数据记录只能持续很短的时间。 – Tory