微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何优化检查IP地址和获取国家?

如何解决如何优化检查IP地址和获取国家?

在 Win10 上使用 Python 3.9.2 我试图在日志文件(大约 65000 行)中获取 IP 地址的国家/地区。我有一个包含 IP 范围(22000 行)和相应国家/地区的 .csv,如下所示:

[...]
2.16.9.0,2.16.9.255,DE,Germany
2.16.11.0,2.16.11.255,FR,France
2.16.12.0,2.16.13.255,CH,Switzerland
2.16.23.0,2.16.23.255,Germany
2.16.30.0,2.16.33.255,Germany
2.16.34.0,2.16.34.255,France
[...]

我正在使用 python 的 ipaddress 并遍历范围列表并检查当前 IP 是否在获取国家/地区的范围内。之前,我会检查两个条件是否为真。

我的目标是计算来自三个国家/地区中每个国家/地区的连接数。一个例子:

import ipaddress
import csv

with open (PATH) as logfile
    logfile_lines = [line.split('\t') for line in logfile]

with open (PATH,r) as ipdaten
    ipdaten_lines = [line.split(',') for line in ipdaten]

streams_france=0

for line in logfile_lines:
    line2 = int(line[9])
    stream = str(line[3])
    iplog = line[1]
    ipobj= ipaddress.ip_address(iplog)

    [...]
    if line2 > 60 and stream == "stream2":
         for ips in ipdaten_lines:

            if ipobj >= ipaddress.IPv4Address(ips[0]) and ipobj <= ipaddress.IPv4Address(ips[1]):
                land = ips[3]

                if land == "France\n":
                    streams_france+=1
                break

     [...]

代码有效,但速度很慢。 1个多小时后,它仍在运行。对于 line2 > 60 and stream == "stream2",大约有 9000 种情况都是 True

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。