我花了整整一天等待循環退出,沒有希望!我知道python在性能方面效率並不高,因此我會非常感謝任何加速我的問題的建議。加速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用於加速嵌套循環,但老實說,我不知道如何使用我的情況。任何見解將是巨大的
如果您的瓶頸所在的處理器上用Cython只會更快。看來你的瓶頸是IO相關的。在這種情況下,無論您的本機處理器處理代碼的速度如何,您的速度都不會增加。 –
好吧,您正在循環查看數據包列表,獲取與當前數據包相同的第二個數據包,並將它添加到列表中。你確定你想要這樣做嗎? –
你的假設是錯誤的:Python非常適合編寫出色的軟件。通常是導致軟件運行緩慢的算法。處理500k數據包絕對不需要一整天。 – Ber