1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3 4import argparse 5import maxminddb 6import random 7import socket 8import struct 9import timeit 10 11parser = argparse.ArgumentParser(description="Benchmark maxminddb.") 12parser.add_argument("--count", default=250000, type=int, help="number of lookups") 13parser.add_argument("--mode", default=0, type=int, help="reader mode to use") 14parser.add_argument("--file", default="GeoIP2-City.mmdb", help="path to mmdb file") 15 16args = parser.parse_args() 17 18random.seed(0) 19reader = maxminddb.open_database(args.file, args.mode) 20 21 22def lookup_ip_address(): 23 ip = socket.inet_ntoa(struct.pack("!L", random.getrandbits(32))) 24 record = reader.get(str(ip)) 25 26 27elapsed = timeit.timeit( 28 "lookup_ip_address()", 29 setup="from __main__ import lookup_ip_address", 30 number=args.count, 31) 32 33print(args.count / elapsed, "lookups per second") 34