我想给你一些个人建议:
考虑用C或C++重写。
考虑并行做,找一个Hadoop集群,并将其编写为mapreduce程序。如果在Hadoop上运行,就不怕数据多了。
考虑升级机器,获取更多内存,尽量把东西放到内存里。
考虑程序优化。
你得看看你的程序哪里慢。您可以按照以下步骤操作:
首先,确保您确实需要检查所有数据。顶一下看看CPU是否满了?单线程单进程实现?可以让它多进程吗?然后top检查每个核心是否满了?如果没有满,那么你就得努力的充分利用你的CPU,让CPU满了!看一下程序。是因为IO没有跑满吗?如果可以的话,IO可以异步吗?或者IO次数太多?可以减少IO数量吗?即使你只做一次IO,比如说你1G的东西,你能不能一次性全部拿到内存中,然后一切都在内存中处理。
如果每个核心都满了,那么看看你的计算都花在哪里了。可以使用hotshot等工具来测量。您可以在1/16数据、1/8数据、1/4数据和1/2数据的情况下进行粗略比较,查看热点结果,看看您的函数所花费的时间如何增加。找出花费最多时间的一件或多件事情。,有针对性的优化可以事半功倍。
找到问题后,再寻找解决方案。如果python带来的数据结构不适合,可以用numpy之类的东西解决吗?可以用吗?一些数据库解决方案。你可以使用cython将C实现包装在某个地方吗?
如果算法不够好,你可以优化算法吗?
希望可以帮到你,这只是我的一个建议!
上一篇:python修改内存
下一篇:python 读取内存数据