Python3多处理核心转储

时间:2016-04-20 19:04:30

标签: python python-3.x multiprocessing

我尝试使用SNMP对网络内的大约8,000台主机进行扫描,以确定它们是否有任何桥接网络接口(我在ISP工作,这是内部设备跟踪)。通过从我们的路由器中提取ARP表获取所有网络设备的列表后,我需要扫描每个主机,这是一个低CPU任务,主要是等待网络延迟。所以,我使用multiprocessing.Pool来产生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

如果有必要,我也可以发布Host类中的代码,但它只是一些SNMP和属性管理的东西,而且当它不是集体时它工作正常,所以我不# 39;想象它是问题的根源。

感谢任何帮助。

0 个答案:

没有答案