IPアドレスがCIDRのnotated IP範囲のリストに含まれているかどうかを確認する方法を探しています。IPリストがIP範囲(CIDR表記)のリストにあるかどうかを確認するための短時間の方法
from netaddr import IPNetwork, IPAddress
for CIDR in CIDRLIST:
if IPAddress(row[0]) in IPNetwork(CIDR):
print('success')
しかしこのソリューションはあまりにも遅い私の問題のためである(800は、IPがCIDRの範囲であると500.000のIP住所が):私は、使用netaddrのように前の例を見てきました。
これをより速く行う方法はありますか?私はpytriesの使用について読んだことがありますが、これが解決策であるとは確信していません。
ループの代わりにリストの理解を使用して、パフォーマンスが向上するかどうかを確認します。 – utengr
私はあなたが "Van Emde Boas Tree"をあらゆる種類のパフォーマンスを備えたPythonで実装できるかどうか疑問です。 – Surt
私は同じ問題を抱えています。答えは木のリストを前処理してツリーを検索することです。私はこのことを学んだのは40年です。私はKnuth Volume 3に相談しなければなりません。ありがたいことに、ITのいくつかのことは変わりません!私は、ブロック内のすべての可能なIP用のキーを持つツリーを構築する必要があるので、vEBツリーがうまくいくとは思わない。 (私がWikipediaの記事を正しく理解していると仮定して)。 –