加速python循环处理数据包

问题描述 投票:1回答:3

我整天都在等待循环退出而没有希望!!我知道python在性能方面效率不高,因此我非常感谢提速解决问题的建议。

我已经使用wireshark捕获了大量数据包(大约500,000个),并将其保存到.pcap文件中。之后,我使用Scapy rdpcap()函数从保存的文件中读取数据包,然后循环访问每个数据包以提取源IP地址。我的代码如下:

from scaly.all import *

srcList =[]
Packets = rdpcap("pcapfile")

for pkt in Packets:
    src = Packets[Packets.index(pkt)][1].src
    srcList.append(src)

注意:我进行了一些挖掘,发现Cython用于加快嵌套循环的速度,但是老实说,我不知道如何在我的情况下使用它。任何见解都会很棒

python performance cython scapy
3个回答
6
投票

如果我不误解您的意图,则可以简化代码,这也应该加快速度:


4
投票

我怀疑问题出在src = Packets[Packets.index(pkt)][1].src行上,因为循环是O(n),列表搜索是O(n),因此使其成为O(n**2)


0
投票

如果您只需要IP源,请告诉scapy忽略在IP层之后执行以下操作的任何解析:

© www.soinside.com 2019 - 2024. All rights reserved.