能够使用单独的Python实例而不是线程来更快地发送数据包

2024-09-29 02:15:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个程序,在这个程序中,我在Scapy二级套接字上发送一个数据包列表。在

def burstPackets(packetList, socket, rateHz, executeTimes):

    rate = Decimal(1)/Decimal(rateHz)

    for i in range(0, executeTimes):
        for packet in packetList:
            socket.send(packet)
            time.sleep(rate) 


def executeRecordingTest():

    DFI_PACKET_SIZE = 1250
    DFI_PACKET_RATE_HZ = 3000
    DFI_SECONDS_OF_PACKETS_TO_GENERATE = 30
    DFI_THREAD_EXECUTION_CYCLES = 1

    packetList3328 = generatePacketList(3328, DFI_PACKET_SIZE, DFI_PACKET_RATE_HZ, DFI_SECONDS_OF_PACKETS_TO_GENERATE)


    myIfaces=ifaces.data.keys()
    ODN_INTERFACE = myIfaces[1]

    socket3328 = conf.L2socket(iface=ODN_INTERFACE)

    burstPackets(packetList3328, socket3328, DFI_PACKET_RATE_HZ, DFI_THREAD_EXECUTION_CYCLES)

我可以通过打开多个命令行窗口并在每个窗口中运行相同的python脚本来运行此代码的多个实例。Python脚本的每个单独实例能够生成~30Mbps的数据包,3个窗口生成~90Mbps。但是,我希望使用线程在单个脚本中生成大量的数据包。我使用下面的代码尝试使用两个独立的线程生成包,每个线程的速度应该是~30Mbps。然而,似乎每个运行的线程都会降低性能,每个线程只生成约15Mbps的数据。在这种情况下,多个实例如何不会像运行多个线程那样导致性能损失?在

^{pr2}$

Tags: 实例程序脚本ratepacketdefsocket数据包