The python binding for ip2region
from ip2region import Searcher, VectorIndex, Header, Version
header = Header.from_file(r".\ip2region_v6.xdb")
version = Version.from_header(header)
# 备注:并发使用,每一个线程需要单独定义并且初始化一个 searcher 查询对象,或者加锁
searcher = Searcher.from_file(version, r"E:\pyproject\pyip2region\tests\ip2region_v6.xdb")
result = searcher.search_by_string("2001:0:2851:b9f0:3866:13a2:846f:c23b")
print(result)from ip2region import Searcher, VectorIndex, Header, Version
header = Header.from_file(r".\ip2region_v4.xdb")
version = Version.from_header(header)
index = VectorIndex.from_file(r".\ip2region_v4.xdb")
searcher = Searcher.from_index(version, r".\ip2region_v4.xdb", index)
result = searcher.search_by_string("1.1.1.1")
print(result)from ip2region import Searcher, VectorIndex, Header, Version
header = Header.from_file(r".\ip2region_v4.xdb")
version = Version.from_header(header)
with open(r".\ip2region_v4.xdb", "rb") as f:
data = f.read()
searcher = Searcher.from_buffer(version, data)
result = searcher.search_by_string("1.1.1.1")
print(result)多线程模式下,只有纯内存的才是线程安全的,其他都需要用户自己加锁加锁,程序中没有任何机制保证线程安全