Python for循环中的多重处理

2024-10-02 00:31:56 发布

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

我写了一个多处理的python代码。我看不到性能有多大的提高。我将分享下面的代码。请帮我弄清楚是不是少了什么东西?在

if len(aspackets) != len(uepackets):
    sys.exit("Packet number miss match between UE and AS")
else:
    for i in range (1,100):
        p = multiprocessing.Process(target=packet,args=(i,))
        p.start()
        #p.join()
        E2E(packet(i),i)
        Airinterface(packet(i))
        core(packet(i))
        switch(packet(i))
        inet(packet(i))
        bridge(packet(i))

包函数是

^{pr2}$

在我的逻辑中,我想从100个数据包的列表开始处理多个数据包。一个包的处理不影响另一个包。也就是说,可以同时在包10和包33上开始计算。在正常流程中(没有多个处理),我从第一个数据包到最后一个数据包按顺序排列,要等45分钟才能得到全部结果。在

我在Ubuntu机器上运行这段代码,它运行在虚拟盒子里。在


Tags: 代码numberlenifpacketmatchsysexit
1条回答
网友
1楼 · 发布于 2024-10-02 00:31:56

使用Pool的解决方案:

from multiprocessing import Pool

def handle_packet(index):
    pac = aspackets[index]
    E2E(pac, index)
    Airinterface(pac)
    core(pac)
    switch(pac)
    inet(pac)
    bridge(pac)

with Pool(processes=10) as p:
    p.map(handle_packet, range(100))

相关问题 更多 >

    热门问题