我在 Appengine 上使用 Python 并正在查找 IP 地址的地理位置,如下所示:
import pygeoip
gi = pygeoip.GeoIP('GeoIP.dat')
Location = gi.country_code_by_addr(self.request.remote_addr)
(pygeoip 可以在这里找到:http://code.google.com/p/pygeoip/)
我想为用户定位我的应用程序的每个页面,所以目前我查找 IP 地址一次,然后将其存储在内存缓存中。
我的问题 - 哪个更快?每次从 .dat 文件中查找 IP 地址或从内存缓存中获取它?还有其他我需要注意的优点/缺点吗?
对于像这样的一般查询,是否有好的指南可以教我如何优化我的代码并自己运行速度测试?我是 python 和一般编码的新手,如果这是一个基本概念,我深表歉意。
谢谢!
汤姆
编辑:感谢您的回复,内存缓存似乎是正确的答案。我认为 Nick 和 Lennart 建议我将整个 gi 变量添加到内存缓存中。我认为这是可能的。仅供引用 - 整个 GeoIP.dat 文件刚刚超过 1MB,所以不是那么大。
最佳答案
需要时间的是从 dat 文件加载数据库。一旦你把它记在内存中,查找时间就不重要了。因此,如果您可以将 gi 变量保存在内存中,这似乎是最好的解决方案。
如果你不能,你可能也不能使用 memcached。
关于python - 哪个更快?内存缓存还是文件查询? (使用 maxmind geoip.dat 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4569780/