Проблема
Я написал скрипт, который перехватывает пакеты от хоста, однако я перехватываю пакеты в непрерывном режиме и хотел бы прекратить перехватывать по таймауту. Я написал следующий код для остановки перехвата пакетов, но он не останавливается, когда время явно превысило время ожидания. Что я мог сделать здесь не так?
import time
import pyshark
prog_start = time.time()
capture = pyshark.LiveCapture(interface='en0')
capture.sniff(timeout=10)
start_time = capture[0].frame_info.time_epoch
end_time = capture[-1].frame_info.time_epoch
print("Capture lasted:", float(end_time) - float(start_time))
pkt_num = 0
for pkt in capture:
pkt_num += 1
print("Time", time.time() - prog_start, "Pkt#", pkt_num)
Затем мы получаем этот вывод с тысячами дополнительных пакетов в секунду, после того, как захват должен был остановиться:
Capture lasted: 9.148329019546509
Time 10.346031188964844 Pkt# 1
Time 10.348641157150269 Pkt# 2
Time 10.351708889007568 Pkt# 3
Time 10.353564977645874 Pkt# 4
Time 10.35555100440979 Pkt# 5
...
Вопрос
Почему PyShark продолжает перехватывать пакеты после истечения времени ожидания?