Python wrpcap在单独线程中运行时未创建pcap文件

Python wrpcap在单独线程中运行时未创建pcap文件,python,multithreading,scapy,python-2.5,Python,Multithreading,Scapy,Python 2.5,我正在尝试使用scapy捕获网络流量,方法是在线程中运行sniff,而不是在主线程中运行它。以避免应用程序被阻塞。但我面临的问题是wrpcap没有创建文件,如果创建了,它会创建一个0 Kb的文件 我使用单独线程的另一个原因是,当用户希望结束捕获时,我希望能够关闭线程 from scapy.all import * from time import gmtime , strftime import threading import time def bomber(stop_event):

我正在尝试使用scapy捕获网络流量,方法是在线程中运行sniff,而不是在主线程中运行它。以避免应用程序被阻塞。但我面临的问题是wrpcap没有创建文件,如果创建了,它会创建一个0 Kb的文件

我使用单独线程的另一个原因是,当用户希望结束捕获时,我希望能够关闭线程

from scapy.all import *
from time import gmtime , strftime
import threading
import time

def bomber(stop_event):
    data=[]
    pkts=[]
    while not stop_event.isSet() :
        pkt100=sniff(count=100)
        data.append(pkt100)

    for pkt in data:
        for x in range(100):
            pkts.append(pkt[x])
    pktsRoll=PacketList(pkts)

    savename="F:\\%s.pcap" % strftime("%Y-%m-%d,%H:%M", gmtime())
    wrpcap(savename,pktsRoll)
    print " its done "


def main():
    stop_event = threading.Event()
    c_thread = threading.Thread(target=bomber, args=(stop_event,))
    c_thread.start()
    time.sleep(20)
    stop_event.set()
这是我正在尝试的代码。我正在使用Python 2.5


提前谢谢。

是否打印“完成”了?是的,但会在一段时间后打印。但是它没有在文件中放任何东西。@RyPeck:是的,但是过了一段时间它就放了。所以我所做的是减少它在一个循环周期内捕获的数据包数量,显然它工作正常。所以问题似乎是网络上没有足够的数据包来编写PCAP文件?@RyPeck:不,这不是问题,我同时下载了一段视频以产生流量。我认为问题是,线程在到达写入文件的部分之前就关闭了。