Python3多进程核心转储

2024-09-26 22:55:12 发布

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

我试图使用SNMP对网络中的8000台主机进行扫描,以确定它们是否有桥接的网络接口(我在ISP工作,这是内部设备跟踪)。通过从路由器中提取ARP表获得所有网络设备的列表后,我需要扫描每个主机,这是一个低CPU任务,主要包括等待网络延迟。所以,我用过多处理.池产生50个工人,让他们扫描离开。一切都很好,但是几分钟后(不是在扫描的一致点),进程被终止,我得到一个核心转储。我真的不知道它为什么会在这个时候崩溃。我只能假设内核(OpenBSD)对这一大堆进程非常恼火。有人知道如何让扫描运行吗?在

相关代码(它在网络类定义中,但大部分应该是无关的):

from multiprocessing import Pool
from Host import Host

def getHosts(self, ips):
    pool = Pool(50)
    self.hosts = pool.map(initHost, ips)
    return self.hosts

def initHost(ip):
    host = Host(ip)
    host.getInterfaces() # Runs a scan via EasySNMP
    return host

如果需要的话,我也可以发布主机类的代码,但这只是一些SNMP和属性管理的东西,而且它在不集中的情况下工作得很好,所以我不认为这是问题的根源。在

感谢任何帮助。在


Tags: 代码fromimportself网络host进程def

热门问题