Python Scapy使用多个CPU



我在python中为Scapy生成数据包的函数一次只使用1个CPU,这让我很头疼。我已经搜索了多重处理,但我真的不知道如何实现它。我也尝试过使用一些ThreadPool,但结果是一样的。

这是我的代码片段。

def code(a,b,c)
    while a < b :
        ## build pkt 100000 times
  send(pkt)
def main():
    ##defining some intregers a b c
    code(a,b,c)
if __name__ == "__main__":

执行此操作时,while函数仅由1个CPU计算。这需要很长时间,无法生成数千个数据包。

有简单的方法吗?

您必须将数据包列表分成块,并让进程为您完成任务。

EDIT:Python3或并发模块是必需的。前面的例子只是给出了一个想法。这是一个有效的解决方案。请随意更改常数值。

from concurrent.futures import ProcessPoolExecutor

START = 0
END = 1000000
CHUNK_SIZE = 1000

chunks = range(START, END, CHUNK_SIZE)

def code(offset):
    packets = []
    chunk = offset + CHUNK_SIZE
    for index in range(offset, chunk):
        packet = build_packet(index)
        packets.append(packet)
    return packets

with ProcessPoolExecutor() as executor:
    packets = []
    for chunk in executor.map(code, chunks):
        packets += chunk
send(packets)

相关内容

  • 没有找到相关文章

最新更新